A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 转达小朋友 于 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.             }
复制代码
不知道是哪些错了 求高人指点

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

4 个回复

正序浏览
王宝生 发表于 2013-6-9 20:16
你代码问题是这样的:如果a大于等于2,就返回true,那么如果不大于等于返回什么呢,你没有写!!所以编译器 ...

谢谢 宝生兄弟  弄明白了
回复 使用道具 举报
你代码问题是这样的:如果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);
                }

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
{:soso_e106:} 大师 果然道法深 又是你来回答。。。多不好意思
回复 使用道具 举报
本帖最后由 无__畏 于 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>  

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马