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

 我来答
然后去远足
推荐于2017-09-02 · TA获得超过1万个赞
知道大有可为答主
回答量:4016
采纳率:83%
帮助的人:2444万
展开全部

这个是 .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 要高。

nnagou10
2015-01-30 · TA获得超过131个赞
知道小有建树答主
回答量:125
采纳率:0%
帮助的人:78.2万
展开全部
就是交给编译器来判断是什么类型,比如:
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不是动态类型!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
v雪地里的猫
2015-01-30 · TA获得超过864个赞
知道小有建树答主
回答量:401
采纳率:100%
帮助的人:246万
展开全部

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

如果声明

var i=100;

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

如果声明

var s="abcd";

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

如果有

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

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

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

var x;//编译时会报错
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
出与美肉深笑1i
2015-01-30 · TA获得超过1.4万个赞
知道大有可为答主
回答量:8750
采纳率:88%
帮助的人:8945万
展开全部
ist是一个泛型集合 foreach是循环遍历list集合里面的元素直到遍历完list中的所有元素 遍历list时,每次遍历都将list集合中的元素作为var类型赋给item 举个例子: 实例化一个图书馆里面的所有书的泛型集合 List list = new List(); foreach
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2015-01-30
展开全部
VAR可代替任何类型
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式