2

ReSharperは、次の変更を行うように私に提案しました。

から:

foreach (var item in db.Proposta.GroupBy(x => x.StatusProposta.Nome))
{
    ...
}

に:

foreach (var item in Queryable.GroupBy(db.Proposta, x => x.StatusProposta.Nome))
{
    ...
}

メッセージは次のとおりです。静的メソッドとしてメソッド「GroupBy」を呼び出す

私はEntityFrameworkを使用しておりdbが私のコンテキストです。

そのような変更でどのような利点が得られるのか、または回避できる問題があるのだろうか。

4

2 に答える 2

2

Resharperは、それがあなたのためにできることとしてそれを提供しているだけです。同様に、静的メソッド呼び出しを拡張メソッド呼び出しとして変換することもできます。

本当にそれは好みの問題です-一方が他方に勝る利点はありません-それらは同じものにコンパイルされますが、拡張メソッドとしてそれを使用する必要があります。LINQを使用する場合は、単純な静的呼び出しではなく、拡張メソッドに拡張メソッド構文を使用する方が広く普及しています。

于 2012-10-16T21:38:07.590 に答える
0

拡張メソッドから(C#プログラミングガイド)

コードでは、インスタンスメソッド構文を使用して拡張メソッドを呼び出します。ただし、コンパイラによって生成された中間言語(IL)は、コードを静的メソッドの呼び出しに変換します。したがって、カプセル化の原則は実際には違反されていません。実際、拡張メソッドは、拡張している型のプライベート変数にアクセスできません。

于 2012-10-16T21:41:39.610 に答える