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