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错误。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 服务器资源监控工具—nmon

    服务器资源监控工具—nmon      在性能测试过程中,对服务端的各项资源使用情况进行监控是很重要的。对于监控服务器资源的工具nmon是最好不过了。      nmon不仅可以监控内存使用情况、磁盘适配器、文件系统中的可用空间、CPU使用率、页面空间和页面速度、异步I/O(仅适用于AIX)、网络文件系统(NFS)、磁盘I/O速度和读写比率、服务器详细信息和资源、内核统计信息、消耗资源进程、运行队列信息等。而且它资源…

  • cada0图纸尺寸_a0图纸尺寸[通俗易懂]

    cada0图纸尺寸_a0图纸尺寸[通俗易懂]a0图纸尺寸a0图纸尺寸问题:a0图纸尺寸答案:841mm*1189mm【相关阅读】1、什么是a0图纸a0图纸是一种很大的绘图纸,这种纸张比一般的复印纸要厚,也比一般的复印纸要黄一点,这种绘图纸一面比较光滑,适合画图用,另一面比较粗糙。但是很多人都感觉不出来,也看不出来。a0图纸广泛的运用于各种建筑设计,规划设计,工业设计,产品设计等等,很多这个专业的学生,从大一开…

  • 用量子纠缠同步你的大脑?阿里云疑似发明量子智能!「建议收藏」

    用量子纠缠同步你的大脑?阿里云疑似发明量子智能!

  • Spark Streaming Join「建议收藏」

    Spark Streaming Join「建议收藏」多数据源Join思路多数据源Join大致有以下三种思路:数据源端Join,如Android/IOS客户端在上报用户行为数据时就获取并带上用户基础信息。计算引擎上Join,如用SparkStreaming、Flink做Join。结果端Join,如用HBase/ES做Join,Join键做Rowkey/_id,各字段分别写入列簇、列或field。三种思路各有优劣,使用时注意…

  • 字符指针 赋值

    字符指针 赋值字符串赋值给字符指针(char*a=“hello”)的正确理解方式 对于语句 char*a=”hello”;       对于这个声明方式,会造成的误解是:声明了一个字符指针(它会指向一个位置),将“字符串”赋值给指针表达式”*a”所指向的地址。但正解是:声明了一个字符指针后,并用字符串常量的第一个字符的地址赋值给指针变量a。       即正确顺序是:1.分配

  • linux网络重启失败「建议收藏」

    linux网络重启失败「建议收藏」问题:网络重启失败如下:[root@localhost~]#systemctlrestartnetworkJobfornetwork.servicefailedbecausethecontrolprocessexitedwitherrorcode.See”systemctlstatusnetwork.service”and”journalctl…

    2022年10月21日

发表回复

您的电子邮箱地址不会被公开。

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