C#隐式类型的局部变量(2)
来源:互联网 责任编辑:栏目编辑 发表时间:2013-07-01 08:24 点击:次
2: stringVariable = 0;
以上的代码不能编译通过, 因为stringVariable的类型是System.String, 而我们不能将值0赋给一个字符类型的变量. 在很多动态语言中, 上面的代码是可以编译通过的, 它们不会给予变量特定的类型, 相反这是编译器, IDE或者运行时环境要考虑的. 使用var并不像使用COM或者VB6中的Variant. var声明的变量类型依然是静态的; 只不过类型是由编译器推断的而已.
在VS2008中, 当你的鼠标停留在var所声明的变量上的时候, 其智能提示可以告诉你该类型的精确类型, 这与我们声明显式类型的时候是一样的。这也更清晰的表明了var声明的变量类型是静态的——编译器清楚的知道变量类型.
隐式类型的限制
你不能在所有的情况下对每一个变量都使用隐式类型声明. 只有当在下列情况之一时使用:
- 变量被声明为局部变量
- 变量作为声明的一部分被初始化
- 初始化表达式不是一个方法组或者匿名函数(没有类型转换)
- 初始化表达式不能是null
- 语句只包含一个变量声明
- 赋给变量的初始化表达式是个编译时类型
其中, 第3点与第4点是很有趣的, 你不能这样编写:
1: var starter = delegate() { Console.WriteLine(); }
因为编译器
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>