如何用表達式方式描述這樣的方法體?表達式方法不能直接調用foreach
void SomeMethod() =>
foreach(int value in ListOfInt)
collect += count;
如何用表達式方式描述這樣的方法體?表達式方法不能直接調用foreach
void SomeMethod() =>
foreach(int value in ListOfInt)
collect += count;
您可以改用ForEach方法作爲expression-body。現在你的表情看起來像這樣:
void SomeMethod() => ListOfInt.ForEach(value => {collect+=count;});
'列表
你說得對,我編輯了我的答案。 –
最簡單的解決方案是不使用表達式體例如
void SomeMethod()
{
foreach(int value in ListOfInt)
collect += count;
}
顧名思義,它首先是一個表達式。表達式被評估爲一個值,而你的SomeMethod
沒有。你可以爭辯說它確實返回void
,它在C#中是有效的。關鍵是do表達體方法使你的代碼更具可讀性。如果沒有,請不要使用它。
直接轉換爲表達體方法,而不是簡化當前代碼更有意義。鑑於僅在問題的代碼,它可以如果計數從值來計算要寫入
collect += ListOfInt.Count() * count;
,那麼它可以是
collect += ListOfInt.Select(value => ...calculate count ...).Sum();
或槓桿Enumerable.Aggregate爲複雜的邏輯。
訣竅是將foreach
語句轉換爲表達式。然後將整個方法轉換爲表達式更容易。
其中'collect'和'count'來自哪裏?班級成員? – qxg
@qxg,與'ListOfInt'相同的地方 – Jodrell