簡體   English   中英

轉換為方法組Resharper

[英]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將來建議它,那么您可以禁用該特定選項 - 其他選項仍然可用。 詳情請參閱此處的答案。

Resharper:vars

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM