私はこのように以下のメソッドを書きました:
internal static IList<EmpowerTaxView> GetEmpowerTaxViewsByLongAgencyAndAgencyTaxTypes(
IList<EmpowerCompanyTaxData> validEmpowerCompanyTaxDatas,
IList<EmpowerTaxView> empowerTaxViews)
{
IList<EmpowerTaxView> result = new List<EmpowerTaxView>();
foreach (EmpowerCompanyTaxData empowerCompanyTaxData in validEmpowerCompanyTaxDatas)
{
IList<EmpowerTaxView> validEmpowerTaxViews =
GetEmpowerTaxViewsByLongAgencyAndTaxType(
empowerCompanyTaxData, empowerTaxViews);
validEmpowerTaxViews.ToList().ForEach(delegate(EmpowerTaxView etv)
{
result.Add(etv);
});
}
return result;
}
そして、この方法では、リシャーパーは言う:
validEmpowerTaxViews.ToList().ForEach(delegate(EmpowerTaxView etv)
{
result.Add(etv);
});
メソッドグループに変換します。これは何を意味し、これを取り除くために何をすべきか。
JaredParはすでに正しい答えを提供しています。私はメソッドのより単純な実装を提案したかっただけです。
internal static IList<EmpowerTaxView> GetEmpowerTaxViewsByLongAgencyAndAgencyTaxTypes(
IList<EmpowerCompanyTaxData> validEmpowerCompanyTaxDatas,
IList<EmpowerTaxView> empowerTaxViews)
{
var results =
from empowerCompanyTaxData in validEmpowerCompanyTaxDatas
from etv in GetEmpowerTaxViewsByLongAgencyAndTaxType(
empowerCompanyTaxData, empowerTaxViews)
select etv;
return results.ToList();
}
Resharperが意味することは、メソッドグループForEach
を使用すると、Add
コードをより簡単に表現できるということです。例:
validEmpowerTaxViews.ToList().Foreach(result.Add);
Add
で定義されたメソッドグループは、ForEach
で期待されるデリゲートと互換性があるため、C#コンパイラが変換を行います。 Resharperのデフォルトでは、ラムダや明示的なデリゲート作成ステートメントよりもメソッドグループが優先されます。
Resharperの提案を受け入れて、変更内容を確認します。いつでも元に戻すことができます。
変更に満足しておらず、Resharperが将来の提案を望まない場合は、その特定のオプションを無効にすることができます。他のオプションは引き続き使用できます。詳細はこちらの回答をご覧ください。