【发布时间】:2010-10-21 10:36:06
【问题描述】:
问题:我刚刚使用 c# lambda 表达式编写了我的第一个代码。它有效,但我不确定这是否是最好的方法。关于更好地执行 lambda 表达式的任何建议?像下面这样在表达式中有很多行代码似乎很奇怪。
背景:我有一个通用的代表名单。每个委托函数都返回一个枚举值,指示函数中发生了什么。在评估委托后,如果它不是特定的枚举值,我需要将枚举添加到列表中。
免责声明:这里的代码非常通用,真正的代码实际上是在委托中做一些事情来确定返回值!
class Class1
{
public enum WhatHappened
{
ThingA,
ThingB,
Nothing
}
private delegate WhatHappened del();
public static List<WhatHappened> DoStuff()
{
List<del> CheckValues = new List<del>();
List<WhatHappened> returnValue = new List<WhatHappened> { };
CheckValues.Add(delegate { return method1(); });
CheckValues.Add(delegate { return method2(); });
CheckValues.ForEach(x =>
{
WhatHappened wh = x();
if (wh != WhatHappened.Nothing)
returnValue.Add(wh);
});
return returnValue;
}
private static WhatHappened method1()
{
return WhatHappened.Nothing;
}
private static WhatHappened method2()
{
return WhatHappened.ThingA;
}
}
注意:我最初有 lambda,比如添加所有项目(见下文),然后删除我不想要的项目(WhatHappened.Nothing)。
CheckValues.ForEach(x => returnValue.Add(x()));
【问题讨论】: