• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#中的隐式类型var——详细示例解析

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

从 Visual C# 3.0 开始,在方法范围中声明的变量可以具有隐式类型var。隐式类型可以替代任何类型,它的具体类型由编译器根据上下文推断而出。

下面就让我来总结下隐式类型的一些特点:

1.var类型会被编译器根据初始值的类型推断出具体的类型
eg:

 var t="test";//var会被推断为string类型
 var p=new Person();//已知Person为一个已定义好的类,编译完成后代码会变成: Person p =new Person();

2.var类型的局部变量必须赋予初始值
eg:

 var t=1;//正确,t会被推断为int类型,值为1
 var t;//报错:隐式类型的局部变量必须已初始化

3.无法将null赋值给隐式类型的局部变量
eg:

 var t=null;//报错:无法将"<null>"赋予隐式类型的局部变量

4.var类型变量的定义必须是在方法中或者在属性get、set访问器中

 eg:

public void Test()
   {
       var t="test";//正确
   }

 public string Name
   {
       get
       {
           var p = new Person();//正确

           return p.Name;
       }
   }

class Program
   {
       var t = 1;//报错:上下文关键字"var"只能出现在局部变量声明中
   }

5.var不能用作方法的参数
 eg:

public void Test(var t){}//报错:上下文关键字"var"只能出现在局部变量声明中

6.不能当做返回值类型 
 eg:

public var Test(){}//报错:并非所有代码路径都返回值 或者:上下文关键字"var"只能出现在局部变量声明中

7.语句中只声明一次变量,声明后不能更改类型
 eg:

var t="100";
t=100;//报错:无法将类型"int"隐式转换为"string"

8.初始化不能是一个匿名方法(也叫匿名委托、匿名函数,通俗上可以这样说,并非官方的规范,后续博文讲匿名方法的会顺带提一下)
 eg:

var t = delegate(int i) { return i; };//报错:无法将"匿名方法"赋予隐式类型的局部变量

9.可以用匿名类初始化
eg:

 var person = new { Age = 18, Name = "Kobe" };//正确
 //匿名类中的属性一定要赋初始值,否则报错
 var person = new { Age, Name };//报错:当前上下文中不存在"Age" 当前上下文中不存在"Name"

使用var定义变量和object不同,它在效率上和使用强类型方式定义变量完全一样,因为还没运行时编译器就已经根据上下文推断出是什么类型了,所以要比object效率要高。善用隐式类型,在难以确定类型的情况下如将用于存储匿名类型或匿名类型集合时使用会有奇效,在新语法中的使用颇多,是一把编程利器。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#中富文本编辑器Simditor带图片上传的全部过程(MVC架构的项目) ...发布时间:2022-07-14
下一篇:
C#解析sln文件发布时间:2022-07-14
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap