在 C# 中,匿名方法提供了一种定义内联函数的便捷方法。虽然这些方法可以轻松分配给委托类型,但尝试将它们分配给隐式类型变量(使用 var)通常会导致编译器错误。
考虑以下代码示例:
Func<string, bool> comparer = delegate(string value) { return value != "0"; };
此代码成功编译,因为匿名方法被显式分配给 Func
var comparer = delegate(string value) { return value != "0"; };
错误:
无法将匿名方法分配给隐式类型的局部变量。
发生此错误的原因是编译器无法推断匿名方法的类型。它可以表示无数种可能的委托类型,包括 Func、Predicate、Action 和无数其他类型。
此外,即使编译器推断出 Func
var comparer = delegate(string arg1, string arg2, string arg3, string arg4, string arg5) { return false; };
但是,这没有意义,因为 Func
要解决此问题并确保匿名方法编译为正确的委托类型,需要在赋值语句中显式指定委托类型,如第一个代码示例所示。
以上是为什么我不能在 C# 中将匿名方法分配给'var”?的详细内容。更多信息请关注PHP中文网其他相关文章!