我有以下代码: Func<string, bool> comparer = delegate(string value) { return value != "0"; }; 但是,下面不编译: var comparer = delegate(string value) { return value != "0"; }; 为什么编译器不知道它是一个Func<string, bool> ? 它接受一个string参数,并返回一个布尔值。 相反,它给了我错误: 无法将匿名方法分配给隐式types的本地variables。 我有一个猜测,那就是如果var版本编译 ,它会缺乏一致性,如果我有以下几点: var comparer = delegate(string arg1, string arg2, string arg3, string arg4, string arg5) { return false; }; 以上是没有意义的,因为Func <>只允许最多4个参数(在.NET 3.5中,这是我使用的)。 也许有人可以澄清这个问题。 谢谢。