C# 类型推断有多好?我在某处读到它仅适用于局部变量?它适用于类级别属性吗?对于方法签名?方法返回类型?等等
最佳答案
C# 中有几种主要的类型推断:
隐式类型局部变量:
- 只针对局部变量
- 仅当值作为声明的一部分赋值时
- 值不能为空
- 值不能是 lambda 表达式、匿名方法或方法组(没有转换)
- 值的编译时类型用于变量的类型
- 变量的任何进一步使用仅根据初始声明+赋值确定的类型进行检查;它们对推理本身没有贡献。
泛型方法类型参数推断,即您不在调用泛型方法时指定类型参数,编译器会根据参数计算出它们。
- 将它用于泛型类型和泛型方法真的很方便
- 无论如何都非常方便 - 如果没有它,LINQ 将很难或无法使用
- 如果没有它,匿名类型将毫无用处
- 非常复杂的规则,甚至规范在一些地方都是错误的
Lambda 表达式参数类型推断
- 编译器尝试根据使用它的上下文计算出 lambda 表达式的参数类型
- 根据我的经验,通常效果很好
数组类型推断,例如
new[] { "Hi", "there"}
而不是new string[] { "Hi", "there"}
- 各种小限制,没什么大不了的
我可能忘记了其他一些可能被称为“类型推断”的功能。我怀疑您最感兴趣的是第一个,但其他的可能也与您相关 :)
关于c# - C# 类型推断有多好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/479883/