C#中var类型

VAR 是3.5新出的一个定义变量的类型
其实也就是弱化类型的定义
VAR可代替任何类型可以赋予局部变量推断“类型”var
而不是显式类型。var 关键字指示编译器根据初始化语句右侧的表达式推断变量的类型。推断类型可以是内置类型、匿名类型、用户定义类型、.NET
Framework 类库中定义的类型或任何表达式。
简单来说,就是编译器会根据上下文来判断你到底是想用什么类型的

至于什么情况下用到VAR  
我想就是你无法确定自己将用的是什么类型
就可以使用VAR     类似
OBJECT
但是效率比OBJECT高点

使用var定义变量时有以下四个特点:

1.
必须在定义时初始化。也就是必须是var s = “abcd”形式,而不能是如下形式:
var s;
s =
“abcd”;

2. 一但初始化完成,就不能再给变量赋与初始化值类型不同的值了。

3.  
var要求是局部变量。

4. 使用var定义变量和object不同,它在效率上和使用强类型方式定义变量完全一样。

举例:

原来我们定义变量,是要这样:
数据类型 变量名 = 值;
如:
int a = 1;
string b =
"2";
也就是说,"必须先明确地"指定你的变量是什么数据类型,才能给它赋值.这点很重要,要记住才好比较.
现在在C#
3.0里,有了变化,就是可以不用像上面那样定义变量了.
如:
var a =1
;
那这个a,是什么类型呢?和原来的做法不一样了.
奥妙就在这里,IDE或编译器会根据你给a
的值:1,来"推论,断定"a是一个整数类型.
同理:
var b =
"2";
因为给b的值是"2"这样一个字符串,所以,b就是string类型...

C#中var类型,布布扣,bubuko.com

时间: 2025-01-16 22:37:00

C#中var类型的相关文章

关于Emit中动态类型TypeBuilder创建类标记的一点思考

  利用TypeBuilder是可以动态创建一个类型,现在有个需求,动态生成一个dll,创建类型EmployeeEx,需要继承原dll里面的Employee类,并包含Employee类上的所有类标记.   网上有很多例子, //创建TypeBuilder. TypeBuilder myTypeBuilder = myModBuilder.DefineType(typeName, TypeAttributes.Public); myTypeBuilder.SetParent(type);   大概

C#中var、int、object性能比较

var关键字是.net3.5推出的关键字,主要是让编译器自动推断并判断变量类型,类似javascript中的var. 在使用一些性能优化软件时,在代码优化时,我发现不管定义什么类型的变量,变量的类型都统统换成var.难道var的性能比具体的类型和object都要高? 实践出真知: 新建一个控制台应用程序 /*Var 性能测试 */            Stopwatch stw = new Stopwatch();              List<int> intlist = new L

推断js中的类型:typeof / instanceof / constructor / prototype

怎样推断js中的类型呢,先举几个样例: var a = "jason"; var b = 123; var c = true; var d = [1,2,3]; var e = new Date(); var f = function(){ alert('jason'); }; 一.最常见的推断方法:typeof typeof是一个一元运算符,它返回的结果始终是一个字符串,对不同的操作数,它返回不同的结果,另外typeof能够推断function的类型:在推断除Object类型的对象时

C#中var和dynamic

var与dynamic这两个关键字,只是看起来很相似,仅此而已!var表示"变量的类型是在编译时决定的",但是dynamic表 示"变量的类型是在运行时决定的".因此,dynamic与var具有截然不同的含义.var让 你在初始化变量时少输入一些字,编译器会根据右值来推断出变量的类型.dynamic更厉害,它告诉编译器,根本就别理究竟是啥类型,运行 时再推断不迟.var只能用于局部变量的定义,你不能把类的属性定义成 var,也不能把方法的返回值类型或者是参 数类型定

asp.net 条码 一维条码 生成, 一共有32中格式类型

想用asp.net 实现条码功能,网上找了代码都不全. 终于找到了一个非常全的DLL 是winForm的,原以为不能用在WEB 上结果 可以使用. 首先,引用 DLL 不必说了,下面是 使用设置.还有很多设置 参数,自己琢磨咯. DLL下载地址  http://pan.baidu.com/s/1jGfwcVc 示例代码: http://pan.baidu.com/s/1kT7etvD (WinForm版) 下图为 ASP.NET 示例代码: public ActionResult Test()

JS中基本类型与包装类型的关系

对于JS中一些类型的转化的东西,自己测试并得出的结论,有错误的地方请大大们留言. 不多废话,直接贴代码,测试请直接拷贝全部代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <title>E

简介Python的collections模块中defaultdict类型

这里我们来简介Python的collections模块中defaultdict类型的用法,与内置的字典类最大的不同在于初始化上,一起来看一下: defaultdict 主要用来需要对 value 做初始化的情形.对于字典来说,key 必须是 hashable,immutable,unique 的数据,而 value 可以是任意的数据类型.如果 value 是 list,dict 等数据类型,在使用之前必须初始化为空,有些情况需要把 value 初始化为特殊值,比如 0 或者 ''. from c

schema中字段类型的定义

当schema中字段类型为String时,保存的时候如果该字段为Number也可以保存成功,mongoose会自动将其转换为数字字符串. 当schema中字段类型为Number时,保存的时候如果该字段如果是String类型,只要能转换为数字格式的字符串,也能保存成功,比如"20.17",否则会报错 在实例化模型的时候,如果传入的字段值的类型和schema中定义的不一致(上面说的可以自动转换类型的不算),那么在实例化生成的文档对象中不包含该属性.如: var schema = Schem

Swift中基本类型的转换

最近上手学习了Swift的语言,谙习JS的我感觉非常顺眼,在此记录下我的学习过程吧. 因为我对Objective-c接触的不多,所以在oc里头使用的东西目前我可能还有很多不知道他的存在. 最近在用swift写了一些小示例app,很多地方都用到了基本类型的转换,但是我发现他居然没有Integer.parse()这样的东西,所以还是摸索了一番. ps: 我使用的版本是xCode6 bate4(其他版本可能实现又差别) OK,talk is chaep, show you the code! 扩展Do