C# 3.0新特性系列:隐含类型var

C# 3.0新特性系列:隐含类型var

 
一.神奇的var

  在C#3.0中增加了一个变量声明var,这个声明和JavaScript 的 var类似,但也有不同。

  1. 相同点,它可以用var来声明任何类型的局部变量。

  2. 不同点,它仅仅负责告诉编译器,该变量需要根据初始化表达式来推断变量的类型,而且只能是局部变量。

  
二.相同点

  它可以声明

var integer = 10;
var name = “edisundong”;
var numbers = new int[] { 1, 2, 3 };

  
三.不同点

  var仅仅是一个关键字,它并不是C#3.0中的一种新的类型,而是负责告诉编译器,该变量需要根据初始化表达式来推断变量的类型,上面的语句相当于

int integer = 10;
string name = ” edisundong “;
int[] numbers = new int[] { 1, 2, 3 };

  三.注意点

  1.在声明时必须同时赋值,因为声明依赖于赋值号右边的表达式,如果有下面的语句:

var integer;
integer = 10;

  编译时会报Implicitly typed locals must be initialized错误。

  2.在使用var声明一个局部变量后,它仍然具有强类型,可以做如下测试:

var integer = 10;
integer = ” edisundong “;

  编译时会报Cannot implicitly convert type ‘string’ to ‘int’错误。

  3. 初始化器表达式的编译期类型不可以是空(null)类型,编译器无法根据null来推断出局部变量的类型,如有下面的语句:

var integer = null;

  编译时会报Cannot assign ‘<null>’ to an implicitly typed local错误。

  4. 初始化语句必须是一个表达式,初始化表达式不能包含它自身,但是可以是包含一个对象或集合初始化器的一个new表达式(即匿名类型)。

  如可以这样去声明:

var coll = new Hashtable();

  5. var的声明仅限于局部变量,也可以包含在foreach、for、using语句中。下面的使用是错误的:

class Program
{
 private var i = 10; //全局私有变量。
 static void Main(string[] args)
 { }
}

  编译时会报The contextual keyword ‘var’ may only appear within a local variable declaration错误。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/111081.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux shell 字符串截取_shell截取最后一个字符

    linux shell 字符串截取_shell截取最后一个字符因最近工作中,用到shell脚本,刚开始感觉难度比较大,但在查阅资料后,感觉也没啥难度;后续整理工作中遇到的脚本知识点;现将遇到的问题,整理如下:遇到问题:需要根据关键字,截取其定义的内容;比如截图宏定义的值,或者截取某行中最后一列数据;如下为查阅网络资料后,整理针对该问题,整理字符串截取操作如下:一、字符串截取:1.如题想提取文本中在[]之前的字符,字符与[]之间有空格;比如文本:    TF…

    2022年9月1日
    4
  • 退出vi退出不了_vim怎么保存

    退出vi退出不了_vim怎么保存1.提示没有文件名2.强制退出(!wq)后再次输入依然进入vi模式故障原因:直接vi后未加文件名

    2022年9月30日
    3
  • [转]使用控件的RenderControl()方法导出Excel

    [转]使用控件的RenderControl()方法导出Excel//使用控件的RenderControl()方法生成HTML表格stringstrName=”HuaMingCe”;Response.Clear();Response.Buffer=true;Response.Charset=”utf-8″;Response.AppendH…

    2022年7月20日
    13
  • Platform SDK工具集

    Platform SDK工具集PlatformSDK工作集,PlatformSDK目录下包含很多工具。这些工具在调试、测试、性能测试、可执行文件查看等方面有比较强的功能。depends.exe:系统调用依赖查看工具,可以用来查看可执行文件的导入表和导出表。WinDbg:功能强大的调试器。rc.exe:资源编译器。mc.exe:消息编译器。bind.exe:绑定DLL,将DLL导出的函数的地址存储到地址表

    2022年5月4日
    77
  • 将图片存储到mysql数据库[通俗易懂]

    将图片存储到mysql数据库[通俗易懂]正常的图片储存要么放进本地磁盘,要么就存进数据库。存入本地很简单,现在我在这里记下如何将图片存进mysql数据库 如果要图片存进数据库 要将图片转化成二进制。1.数据库存储图片的字段类型要为blob二进制大对象类型2.将图片流转化为二进制下面放上代码实例一、数据库CREATETABLE`photo`(`id`int(11)NOTNULL,`na

    2022年7月12日
    22

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号