2011-08-08 11 views
23

Pisałem metoda poniżej tak:Konwersja do grupy metody 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; 
} 

I tym sposobem, resharper mówi:

validEmpowerTaxViews.ToList().ForEach(delegate(EmpowerTaxView etv) 
{ 
    result.Add(etv); 
}); 

Konwersja do grupy metody. Co to oznacza i co należy zrobić, aby się tego pozbyć.

+4

BTW, nie * nie *, aby „pozbyć się tego”: nie jest to ostrzeżenie, tylko sugestia. Jeśli wolisz zachować ją w obecnej formie, ponieważ jest ona bardziej przejrzysta, nie stanowi to problemu. –

+0

Tak, wiem, ale był ciekawy, jak pozbyć się błędu i jaka była grupa metod. – SaiBand

Odpowiedz

6

JaredPar już dostarczono poprawną odpowiedź, chciałem zaproponować prostszą implementację metody:

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(); 
} 
+0

Dzięki za udzielenie mi szczegółowej odpowiedzi. – SaiBand

59

Co oznacza Resharper oznacza, że ​​można wyrazić kod ForEach po prostu za pomocą grupy metod Add. Przykład:

validEmpowerTaxViews.ToList().Foreach(result.Add); 

Grupa sposób określony przez Add jest zgodny z oczekiwanym przez delegata ForEach a tym samym kompilator C# zajmie robi konwersję. Wartością domyślną w Resharper jest preferowanie grup metod przez lambdy i jawne instrukcje tworzenia delegatów.

+0

Dzięki JaredPar za sugestię. – SaiBand

+7

+1 Jest to jedyna odpowiedź, która próbuje wyjaśnić "dlaczego". – TarkaDaal

6

Akceptuj sugestii ReSharper, aby zobaczyć, co sprawia, że ​​zmienia. Zawsze możesz je cofnąć.

Jeśli nie jesteś zadowolony ze zmiany i nie chcesz, aby Resharper sugerował ją w przyszłości, możesz wyłączyć tę konkretną opcję - pozostałe pozostaną dostępne. Zobacz odpowiedź tutaj, aby uzyskać szczegółowe informacje.

Resharper: vars

+1

Dzięki za opowiadanie mi czegoś nowego! – SaiBand

Powiązane problemy