黑马程序员技术交流社区

标题: 想在方法内部传入一个委托,我写的哪里不对 该怎样写 [打印本页]

作者: 转达小朋友    时间: 2013-6-9 06:33
标题: 想在方法内部传入一个委托,我写的哪里不对 该怎样写
本帖最后由 转达小朋友 于 2013-6-9 20:42 编辑
  1.   List<string> list = new List<string>() { "1", "2", "3", "4" };
  2.             var temp = list.FindAll(a => { if (int.Parse(a) >= 2) return true; });//这里提示错误
  3.             //var temp2 = list.FindAll(a=>int.Parse(a)>=2);//可是简写的 上行代码却没有错误
  4.             foreach (var item in temp)
  5.             {
  6.                 Console.WriteLine(item);
  7.             }
复制代码
不知道是哪些错了 求高人指点
作者: 无__畏    时间: 2013-6-9 12:12
本帖最后由 无__畏 于 2013-6-9 12:14 编辑

            var temp = list.FindAll(a => { if (int.Parse(a) >= 2) return true; });//这里返回值是bool          这个委托的意思是大于等于2,就返回true

         var temp2 = list.FindAll(a=>int.Parse(a)>=2);  //这里返回值是int,  这个委托的意思是如果大于等于2,就返回这个数


        list.FindAll要求返回值为 list<string>  

作者: 转达小朋友    时间: 2013-6-9 13:40
{:soso_e106:} 大师 果然道法深 又是你来回答。。。多不好意思
作者: 王宝生    时间: 2013-6-9 20:16
你代码问题是这样的:如果a大于等于2,就返回true,那么如果不大于等于返回什么呢,你没有写!!所以编译器应该会提示一个类似于并不是所有返回路径都有返回值。正确做法这样:
      List<string> list = new List<string>() { "1", "2", "3", "4" };
                var temp = list.FindAll(a => {  
                                       if  (int.Parse(a) >= 2) return true;
                                       else  return false; });//这里提示错误
                //var temp2 = list.FindAll(a=>int.Parse(a)>=2);//可是简写的 上行代码却没有错误
                foreach (var item in temp)
                {
                    Console.WriteLine(item);
                }
作者: 转达小朋友    时间: 2013-6-9 20:42
王宝生 发表于 2013-6-9 20:16
你代码问题是这样的:如果a大于等于2,就返回true,那么如果不大于等于返回什么呢,你没有写!!所以编译器 ...

谢谢 宝生兄弟  弄明白了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2