C#隐式类型的局部变量(2)

来源:互联网 责任编辑:栏目编辑 发表时间:2013-07-01 08:24 点击:
   2: stringVariable = 0;

以上的代码不能编译通过, 因为stringVariable的类型是System.String, 而我们不能将值0赋给一个字符类型的变量. 在很多动态语言中, 上面的代码是可以编译通过的, 它们不会给予变量特定的类型, 相反这是编译器, IDE或者运行时环境要考虑的. 使用var并不像使用COM或者VB6中的Variant. var声明的变量类型依然是静态的; 只不过类型是由编译器推断的而已.

在VS2008中, 当你的鼠标停留在var所声明的变量上的时候, 其智能提示可以告诉你该类型的精确类型, 这与我们声明显式类型的时候是一样的。这也更清晰的表明了var声明的变量类型是静态的——编译器清楚的知道变量类型.

隐式类型的限制

你不能在所有的情况下对每一个变量都使用隐式类型声明. 只有当在下列情况之一时使用:

  1. 变量被声明为局部变量
  2. 变量作为声明的一部分被初始化
  3. 初始化表达式不是一个方法组或者匿名函数(没有类型转换)
  4. 初始化表达式不能是null
  5. 语句只包含一个变量声明
  6. 赋给变量的初始化表达式是个编译时类型

其中, 第3点与第4点是很有趣的, 你不能这样编写:

   1: var starter = delegate() { Console.WriteLine(); }

因为编译器

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • 用C#制作屏幕捕获程序
  • .NET程序员项目开发必知必会—Dev环境中的集成测试用例执行时上
  • 遍历ArrayList易犯错误
  • C#对XML操作:一个处理XML文件的类(1)
  • .NET简谈反射(动态调用)
  • 使用C#编写LED样式时钟控件
  • DataList嵌套问题 如何删除内层子DataList的记录
  • 怎样用C#实现完整文档打印功能
  • .NET简谈自定义事务资源管理器
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1