博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[C#] 隐式类型var —— 示例解析
阅读量:5264 次
发布时间:2019-06-14

本文共 1297 字,大约阅读时间需要 4 分钟。

从 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类型,值为1var t;//报错:隐式类型的局部变量必须已初始化

 

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

eg:

var t=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效率要高。善用隐式类型,在难以确定类型的情况下如将用于存储匿名类型或匿名类型集合时使用会有奇效,在新语法中的使用颇多,是一把编程利器。

转载于:https://www.cnblogs.com/jqmtony/p/3952834.html

你可能感兴趣的文章
A - Vasya and Socks
查看>>
项目管理、设计开发、代码管理、bug管理工具介绍
查看>>
分布式计算开源框架Hadoop介绍
查看>>
安卓平台接口剖析
查看>>
linux文件编码查看与修改
查看>>
[Java] 系统环境变量配置
查看>>
坏的事情不都会带来坏的结果
查看>>
设置placeholder的样式
查看>>
RPC的基础:调研EOS插件http_plugin
查看>>
HIT1946 希尔伯特分形曲线(dfs)
查看>>
第二次团队冲刺第二天
查看>>
再回首数据结构—AVL树(二)
查看>>
文件的上传和下载绝对路径
查看>>
青瓷引擎之纯JavaScript打造HTML5游戏第二弹——《跳跃的方块》Part 2
查看>>
Permission权限大全
查看>>
(转载)VS2010/MFC编程入门之二十(常用控件:静态文本框)
查看>>
(转载)c/c++笔试面试题(1)
查看>>
[转]MySQL与Oracle的语法区别详细对比
查看>>
[转]应用服务器ApacheSocketUnixthread
查看>>
23种设计模式之单例模式
查看>>