我在下面写了一个像这样的方法:
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;
}
对于这种方法,resharper说:
validEmpowerTaxViews.ToList().ForEach(delegate(EmpowerTaxView etv)
{
result.Add(etv);
});
转换为方法组。这意味着什么以及应该采取什么措施来摆脱这种情况。
答案 0 :(得分:61)
Resharper的含义是,您可以使用方法组ForEach
更简单地表达Add
代码。
例如:
validEmpowerTaxViews.ToList().Foreach(result.Add);
Add
定义的方法组与ForEach
期望的委托兼容,因此C#编译器将负责转换。 Resharper中的默认设置是优先于lambdas和显式委托创建语句的方法组。
答案 1 :(得分:6)
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();
}
答案 2 :(得分:6)
接受Resharper的建议,看看它做了什么改变。您可以随时撤消它们。
如果您对此更改不满意并且不希望Resharper将来建议它,那么您可以禁用该特定选项 - 其他选项仍然可用。有关详细信息,请参阅此处的答案。