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 要高。
展开全部
就是交给编译器来判断是什么类型,比如:
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不是动态类型!
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不是动态类型!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个是隐式类型,能自动类型推断,也就是说具体的类型会由编译器帮助推断。
如果声明
var i=100;
那编译器会推断出i为int类型,
如果声明
var s="abcd";
那编译器会推断s为string类型,
如果有
public DataSet GetDS()
{//……}
var ds=GetDS();
那编译器会推断x为DataSet类型。。。
注意,声明时候必须带上初始值,也就是说,不能直接写
var x;//编译时会报错
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
ist是一个泛型集合 foreach是循环遍历list集合里面的元素直到遍历完list中的所有元素 遍历list时,每次遍历都将list集合中的元素作为var类型赋给item 举个例子: 实例化一个图书馆里面的所有书的泛型集合 List list = new List(); foreach
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-01-30
展开全部
VAR可代替任何类型
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询