分享
 
 
 

C#3.0新特性之隐式类型局部变量的使用

王朝c#·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

首先说明一下,此新特性的专题基于MS五月份分布的C#3.0规范,但是官方中文版还没有出来,结合自己的实践和理解,希望能和大家一起分享某些前沿的东东,很有可能一些地方会出错,望抛砖。

在C# 3.0里面, 可以对局部变量进行隐式类型声明, 就是在声明时可以不指定该变量的类型, 变量在初始化的时候会由编译器从表达式的上下文中推出真正的类型, 对开发者来说, 无疑是简化了很多, 主要是通过新的关键字var, 有如下面的例子:

var i = 5;

var s = "Hello";

var d = 1.0;

var numbers = new int[] {1, 2, 3};

var orders = new Dictionary<int, Order>();

其实上面的声明方法和之前在1.x和2.x中以下的声明方法是等效的:

int i = 5;

string s = "Hello";

double d = 1.0;

int[] = new int[] {1, 2, 3};

Dictionary<int, Order> orders = new Dictionary<int, Order>();

方便是绝对的, 就像我们之前在某些别的高级语中, 早就实现了此功能, 但是对某局部变量进行隐式类型声明, 也要遵循一定的条件限制:

- 声明变量时, 必须对该变量进行初始化.

- 初始化该变量时, 必须使用对应的表达式, 而不能简单地用一个对象或是集合本身, 但如果是使用了关键字new创建的对象或是集合却是合法的, 因为那已经是一个表达式了.

- 变量初始化的表达式在编译时, 绝对不可以是null类型.

- 如果将要进行隐式类型声明的局部变量包含多个声明, 则要保证每个初始化表达式都有相同的编译时类型, 保持类型一致, 不能一会是int, 一会又变成了int[].

下面我们来看几个有误的声明例子:

例子1:

var x; //声明变量时没有初始化

例子2:

var y = {1, 2, 3}; //集合本身不能作为初始化表达式

例子3:

var z = null; //编译时类型不允许为null

在现行的Orcas编译环境下, 可以使用var声明局部变量, 同时也向后兼容, 即原来的方式是可用的. 另外, 根据MS官方的文档说来, var声明适用于for语句的初始化表达式中, 在using语句中资源获得时也可用, 举个例子可以在foreach语句中的迭代变量应用var:

var numbers = int[] { 1, 3, 5, 7, 9};

foreach(var n in numbers) Console.WriteLine(n);

不过这样用的前提要求该集合类型必须可以枚举, var就可以自动被编译器认作int类型了。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有