c#中的var是什么类型找半天没找到谁帮解释下

如题所述

这个是 .NET 3.0 之后才新增的特性,称为“推断类型”,需要在创建项目时目标平台选择 .NET 3.0 或以上才可以使用。

 

官方给出的解释是:可以赋予局部变量推断“类型”var 而不是显式类型。var 关键字指示编译器根据初始化语句右侧的表达式推断变量的类型。推断类型可以是内置类型、匿名类型、用户定义类型、.NET Framework 类库中定义的类型或任何表达式。

 

我们举个例子。原来我们定义变量,是要这样:

int a = 1;
string b = "2";

也就是说,必须先明确地指定变量是什么数据类型,才能给它赋值。

 

而 var 是一个弱类型,用:

var a = 1;
var b = "2";

编译器会根据你给 a 的值 1,来推断 a 是一个整数类型;同理,推断出 b 是一个字符串类型。有点类似 object,但是效率比 object 要高。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-01-30
就是交给编译器来判断是什么类型,比如:
string a = "abc";
var b = a;
这里的b就是string型,但是为了方便写成var,实际是不存在var型的。
那为什么要设定这个var呢?
比如有个类是:ThisIsAVeryVeryVeryLongClass,那声明的时候就非常麻烦啊:
ThisIsAVeryVeryVeryLongClass a = new ThisIsAVeryVeryVeryLongClass();
于是就可以换成:
var a = new ThisIsAVeryVeryVeryLongClass();
这样就短了很多。

其实更多的时候是用在不确定类型的情况下的,比如a是一个有很多属性的对象:
var x = a.Select(a=> new { Abc = a.Ac, Xyz = a.Xz});
这样就不需要单独为x写一个类了。
但是注意这个var不是动态类型!
第2个回答  2015-01-30

这个是隐式类型,能自动类型推断,也就是说具体的类型会由编译器帮助推断。

如果声明

var i=100;

那编译器会推断出i为int类型,

如果声明

var s="abcd";

那编译器会推断s为string类型,

如果有

public DataSet GetDS()
{//……}
var ds=GetDS();

那编译器会推断x为DataSet类型。。。

注意,声明时候必须带上初始值,也就是说,不能直接写

var x;//编译时会报错

第3个回答  2015-01-30
ist是一个泛型集合 foreach是循环遍历list集合里面的元素直到遍历完list中的所有元素 遍历list时,每次遍历都将list集合中的元素作为var类型赋给item 举个例子: 实例化一个图书馆里面的所有书的泛型集合 List list = new List(); foreach
第4个回答  2015-01-30
VAR可代替任何类型

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网