【发布时间】:2010-11-07 18:46:18
【问题描述】:
我想在内联 if 语句中编写一个 lambda 表达式。但内联 if 语句必须有强类型结果。
MyType obj = someObj.IsOk ? null : () => {
MyType o = new MyType(intVal);
o.PropertyName = false;
return o;
};
当然这不起作用,因为 lambda 表达式不是强类型的。我想过使用Func<intVal, MyType> 委托,使其成为强类型。
但是我如何在内联if中使用这个Func<>?我是否有可能必须在外部定义自己的函数并在内联 if 语句中使用它?
【问题讨论】:
-
好吧,我不知道你会用你保存的 lambda 做什么(在本地使用它或将它传递给其他对象/方法)。如果您只在本地使用 lambda,我想您应该能够使用 var 关键字完成工作。
-
我已经更改了我的示例代码。问题是我必须使用带参数的构造函数并设置其他一些属性。所以对象初始化器不考虑在内。
-
您可以使用带参数的构造函数,但仍然可以使用对象初始化表达式设置属性 - 例如,请参阅我的答案。