如:
private int GetMyInt(){
intList.ForEach(
t=>{
找到了想要的int,在这里我想return 直接返回方法,无法完成。
});
}
有什么办法吗?
return intList.FirstOrDefault(.....);
好吧。。。其实问题是这样的。。。是我描述错了
我在一个方法开始时会首先对参数进行判断,如果不对,就return这个方法。
比如if(param<0)return "参数不合法"!
然后其中有个判断就是这样用lamda表达式写的,结果就没办法返回了。
@littledoo:
string err=null;
intList.ForEach( t=> { if(param < 0){ err = "参数不合法";return;}});
@Launcher: 恩,看来是没有直接返回的方法了对吧。C#语法应该支持这个。3q
@littledoo: 大哥,你看下 ForEach 的定义:
void ForEach(Action<T> action)
入参是 Action<T> ,表示无返回值的委托。你非要用 ForEach,自然你的 lamada 就表示无返回的方法。
所以我很不理解,什么叫着“看来是没有直接返回的方法”,不是看来,是你使用 ForEache,它“本来”就没有。
@Launcher: cool down,man...你不觉得如果能直接返回更优雅吗?这是编译器可以处理的,我是觉得应该有这样更好的方式,所以才来问这个问题。
@littledoo: 我真为你捉急,这不是编译器的问题,这是语法层面的问题。就算我写个 List<T>的扩展方法,TResult ForEach(this List<T> source,Func<T,TResult> func),我能在代码中用,但是这是一个“优雅”的用来判断参数合法的方案吗?
ok,ok~~我错了,我错了还不行吗哥,谢谢您了,88~