首页 新闻 会员 周边

如何从lamda表达式语句中直接返回方法的返回值

0
[待解决问题]

如:

private int GetMyInt(){

  intList.ForEach(

    t=>{
  

      找到了想要的int,在这里我想return 直接返回方法,无法完成。

});

}

 

有什么办法吗?

littledoo的主页 littledoo | 初学一级 | 园豆:2
提问于:2013-08-08 11:18
< >
分享
所有回答(1)
0

return intList.FirstOrDefault(.....);

Launcher | 园豆:45045 (高人七级) | 2013-08-08 11:22

好吧。。。其实问题是这样的。。。是我描述错了

我在一个方法开始时会首先对参数进行判断,如果不对,就return这个方法。
比如if(param<0)return "参数不合法"!

然后其中有个判断就是这样用lamda表达式写的,结果就没办法返回了。

支持(0) 反对(0) littledoo | 园豆:2 (初学一级) | 2013-08-08 11:47

@littledoo: 

 

string err=null;

intList.ForEach( t=> { if(param < 0){ err = "参数不合法";return;}});

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2013-08-08 11:50

@Launcher: 恩,看来是没有直接返回的方法了对吧。C#语法应该支持这个。3q

支持(0) 反对(0) littledoo | 园豆:2 (初学一级) | 2013-08-08 13:02

@littledoo: 大哥,你看下 ForEach 的定义:

void ForEach(Action<T> action)

入参是 Action<T> ,表示无返回值的委托。你非要用 ForEach,自然你的 lamada 就表示无返回的方法。

所以我很不理解,什么叫着“看来是没有直接返回的方法”,不是看来,是你使用 ForEache,它“本来”就没有。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2013-08-08 13:09

@Launcher: cool down,man...你不觉得如果能直接返回更优雅吗?这是编译器可以处理的,我是觉得应该有这样更好的方式,所以才来问这个问题。

支持(0) 反对(0) littledoo | 园豆:2 (初学一级) | 2013-08-08 13:14

@littledoo: 我真为你捉急,这不是编译器的问题,这是语法层面的问题。就算我写个 List<T>的扩展方法,TResult ForEach(this List<T> source,Func<T,TResult> func),我能在代码中用,但是这是一个“优雅”的用来判断参数合法的方案吗?

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2013-08-08 13:21

ok,ok~~我错了,我错了还不行吗哥,谢谢您了,88~

支持(0) 反对(0) littledoo | 园豆:2 (初学一级) | 2013-08-08 13:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册