c#.Net中“var”关键字的意义是什么?
可能重复:
在C#中使用var关键字
var关键字有什么意义?
我在使用隐式输入而不是显式输入时有点困惑。
正如MSDN在C#编码标准中引用的那样:
当赋值的右侧显示变量的类型时,或者精确类型不重要时,请对局部变量使用隐式类型。
我的问题是,当我们已经知道底层变量类型时,为什么我们需要在这里使用隐式类型?
有什么好处?
请帮助澄清我的疑问。
以此为例:
var q = from c in myCollection select new { c.Value1, c.Value2 };
我们无法在此确定q的数据类型,因为它是在运行时生成的“anonymus-type”
这就是它的主要目的
当我们已经知道底层变量类型时,为什么我们需要在这里使用隐式类型? 有什么好处?
它只是为了编码方便,快速打字,如果你愿意,加上你的线条变得更短 。
最后,在这种情况下,类型在赋值的右侧可见。
当您知道基础类型时,从隐式类型变量中获得的唯一优势是,如果您更改原始类型(对于兼容的类型),则不必重新定义它们。
基本上,隐式类型变量的最大优点是分配往往长且不断变化的类型(如linq枚举或可查询)
看看这个:
Collection, Action>> x = new Collection, Action >>();
现在看看这个:
var x = new Collection, Action>>();
并且,我敢,我敢于告诉我,使用var
关键字没有任何冒险。
注意:这是基于某个项目中的实际声明而我没有提及。
有可能你认为使用var
关键字有一些缺点,嗯,有,但它们都在编译时。 您的可执行文件一如既往。 这是正确的var
与object
, dynamic
, variant
,完全没有! 相反,它告诉编译器使用您分配给它的任何类型声明变量。
例如:
var x = 1; x = "something"; //Error!!!
好吧,这可能听起来很傻。 “我知道这种类型” – 你说 – “为什么我不能把它放下来?” – 你问 – “看,很容易:”
int x = 1;
好吧,有三个原因:
在创建文本转换模板或代码片段时,最后一点特别有用,但在日常复制粘贴中也是如此。
但是,只要考虑一下你是否改变了一些神秘方法的返回类型……说你有:
List MamboJambo() { //... }
现在你已将其更改为:
IList MamboJambo() { //... }
不好了! 您现在必须更新50个课程。 等什么? 不,你没有! 因为你一直遵循那个总是使用var
建议。
注意:好的,不是现实的例子,它仍然得到了重点。
var关键字用于变量声明而不是类型。 var的技术术语是“隐式类型的局部变量声明。”变量本身仍然是静态类型的(类型是在编译代码时确定的),并且仍然是强类型的(一旦声明它就不能改变类型) 。 不同之处在于我们不再在源代码中明确声明变量的类型; 相反,编译器根据变量的初始化推断变量的类型。 例如:
var maxValue = 500; var customerFirstName = "Jimmy"; var stopwatch = new System.Timers.Timer();
在此示例中,maxValue使用System.Int32类型编译,customerFirstName是System.String,秒表是System.Timers.Timer。 如果不明显,当使用var声明变量时,声明中的初始值设定项是必需的。 此外,初始化程序对它有一些限制,其中包括:
它必须是一个返回值类型的表达式; 例如,匿名函数声明(如lambdas)无效,但允许使用文字表达式和对象构造函数。 它不能返回null类型。 它不能引用声明的变量。 每个声明只允许一个声明; 不允许多个声明。 更多信息: http : //www.techrepublic.com/blog/programming-and-development/code-concepts-cs-var-keyword/1461
它声明了一个隐式类型变量。 也就是说,在编译时它会自己确定类型,因此您不必键入它。 它的主要目的是声明一个变量,例如你想要一个匿名方法。 基本上它允许你输入更少,仅此而已,从代码阅读器的角度来看,它更好地指定可能的确切类型。
上述就是C#学习教程:c#.Net中“var”关键字的意义是什么?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1034425.html