我有以下代码:
Func<string, bool> comparer = delegate(string value) {
return value != "0";
};
但是,以下内容无法编译:
var comparer = delegate(string value) {
return value != "0";
};
为何编译器无法找出它是Func<string, bool>
?它采用一个字符串参数,并返回一个布尔值。相反,它给了我错误:
无法将匿名方法分配给隐式类型的局部变量。
我有一个猜测,那就是如果var版本已编译,如果我具有以下内容,它将缺乏一致性:
var comparer = delegate(string arg1, string arg2, string arg3, string arg4, string arg5) {
return false;
};
由于Func <>最多只允许使用4个参数(在.NET 3.5中,这是我正在使用的参数),因此上述方法没有意义。也许有人可以澄清这个问题。谢谢。
Func<string, bool>
?Converter<string, bool>
在我看来,这很像!
Dim comparer = Function(value$) value <> "0"
Func<>
最多接受16个参数。