为什么不能将匿名方法分配给var?

我有以下代码:


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中),因此上述内容没有任何意义。也许有人可以澄清这个问题。谢谢。


四季花海
浏览 516回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP