我在下面写了一个像这样的方法:
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;
}
Run Code Online (Sandbox Code Playgroud)
对于这种方法,resharper说:
validEmpowerTaxViews.ToList().ForEach(delegate(EmpowerTaxView etv)
{
result.Add(etv);
});
Run Code Online (Sandbox Code Playgroud)
转换为方法组.这意味着什么,应该做些什么来摆脱这个.
Jar*_*Par 63
Resharper的含义是您可以ForEach
使用方法组更简单地表达代码Add
.例:
validEmpowerTaxViews.ToList().Foreach(result.Add);
Run Code Online (Sandbox Code Playgroud)
定义的方法组Add
与期望的委托兼容,ForEach
因此C#编译器将负责转换.Resharper中的默认设置是优先于lambda和显式委托创建语句的方法组.
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();
}
Run Code Online (Sandbox Code Playgroud)
接受Resharper的建议,看看它做了什么改变.您可以随时撤消它们.
如果您对此更改不满意并且不希望Resharper将来建议它,那么您可以禁用该特定选项 - 其他选项仍然可用.详情请参阅此处的答案.
归档时间: |
|
查看次数: |
20459 次 |
最近记录: |