![](/img/trans.png)
[英]What is this ReSharper snippet 'convert to method group' actually doing?
[英]Convert to Method Group Resharper
我在下面寫了一個像這樣的方法:
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);
});
轉換為方法組。 這意味着什么,應該做些什么來擺脫這個。
Resharper的含義是,您可以通過使用方法組Add
來更簡單地表達ForEach
代碼。 例:
validEmpowerTaxViews.ToList().Foreach(result.Add);
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();
}
接受Resharper的建議,看看它做了什么改變。 您可以隨時撤消它們。
如果您對此更改不滿意並且不希望Resharper將來建議它,那么您可以禁用該特定選項 - 其他選項仍然可用。 詳情請參閱此處的答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.