表达式方法不能直接调用foreach
如何用表达式方式描述这样的方法体?表达式方法不能直接调用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