



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第C#中的var关键字用法介绍从.NET3.0开始,在方法内部可以使用var关键字声明局部变量。var关键字到底是什么?在何种情况下使用呢?
var关键字用来隐式地声明一个数据类型,变量类型是在编译期确定的,而不是在运行时确定的
声明一个var变量a,把整型数10赋值给a,接着把一个字符串赋值给变量a。运行发现报错:无法将类型string隐式转换为int。
声明一个var变量a,把整型数10赋值给a,接着把一个字符串赋值给变量a。运行发现报错:无法将类型string隐式转换为int。
这说明:用var声明一个变量时,虽然不是显式声明,但在编译期,已经确定了变量的类型。
通过反编译同样可以证明以上推断。
把a=abc这行代码去掉,并生按F6生成解决方案。
打开VS2012开发人员命令提示,输入如下命令
在解决方案资源管理器中右键项目的名称,选择在文件资源管理器中打开文件夹,再点击bin,Debug文件夹,在地址栏中赋值Debug文件夹的路径
点击ILDASM的文件--打开,输入刚才拷贝的Debug文件夹路径,再选择.exe后缀的可执行文件,双击Main:void(string[])。在IL代码中:
可以看出:变量a已经是Int类型,并且是一个局部变量。
var关键字让编码更简短
对于一些名称比较长的类,当创建类实例的时候,用var关键字看上去更简短。当然这个理由是比较牵强的~~
classProgram
staticvoidMain(string[]args)
HelloIHaveALongLongNamestring,stringobj=newHelloIHaveALongLongNamestring,string
publicclassHelloIHaveALongLongNameT,T
publicstringName;
}
如果使用var关键字,就变成:
varobj=newHelloIHaveALongLongNamestring,string
obj.Name="hello";
可见,用var关键字,让写法更简短,并且var变量是一个强类型。
var关键字与匿名类型
通过LINQ表达式返回一个匿名类型。
staticvoidMain(string[]args)
string[]strs={"hello","world","nice","to","meet","you"};
objecto=fromsinstrs
wheres.Length3
selectnew{s.Length,s};
}
以上,object类型变量o并不是一个强类型变量。
如果我们用强类型的类来接收LINQ返回的集合。
classProgram
staticvoidMain(string[]args)
string[]strs={"hello","world","nice","to","meet","you"};
IEnumerableSomeDatao=fromsinstrs
wheres.Length3
selectnewSomeData(){Key=s.Length,Value=s};
foreach(SomeDataitemino)
Console.WriteLine(item.Key);
publicclassSomeData
publicintKey;
publicstringValue;
}
以上,在IEnumerableSomeData类型集合中,每一个集合元素都是强类型。
如果用var关键字来接收LINQ返回的匿名类型集合。
classProgram
staticvoidMain(string[]args)
string[]strs={"hello","world","nice","to","meet","you"};
varo=fromsinstrs
wheres.Length3
selectnew{Key=s.Length,Value=s};
foreach(varitemino)
Console.WriteLine(item.Key);
}
以上,var类型变量o接收匿名类型集合,该集合的每个元素也是强类型。也就是说,编译器在编译的时候自动推断类型。
总结:
通过var关键字声明的变量,变量类型是在编译期确定的,而不是在运行时确定对于LINQ表达式返回的匿名类型,可以用var关键字声明的变量接收
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年农业用地的租赁合同模板
- 临床营养学理论与实践
- 大医精诚演讲课件
- 酒店餐饮精细化管理体系构建与实施
- 湖北省重点高中智学联盟2024-2025学年高一下学期5月联考生物试题
- 2025年河南省平顶山市鲁山县部分中学九年级4月联考数学试卷
- 护理查房互动环节设计与实施
- 2025年现场急救知识试题
- 北师大4下一双手教学设计配课件
- 腹泻患者健康教育
- 食品工厂设计概述课件
- 回转窑-工作原理课件
- 课件亚洲与非洲音乐 课件-2022-2023学年高中音乐人音版(2019) 必修 音乐鉴赏
- DB32/T+4396-2022《勘察设计企业质量管理标准》-(高清正版)
- 《铁路选线设计》教学全套课件
- 中考数学总复习的教案
- 在线考试系统的设计与实现论文
- 毕业设计(论文)双梁a型门式起重机结构设计
- DLT 646-2021 输变电钢管结构制造技术条件
- 基于“鄂尔多斯婚礼”谈民族舞蹈及音乐的传承发扬
- 结晶葡萄糖结晶分解课件
评论
0/150
提交评论