当前位置: 首页 > 编程语言 > C#

c#.Net中“var”关键字的含义是什么?分享

时间:2023-04-10 20:03:08 C#

c#.Net中“var”关键字的意义是什么?可能重复:在C#中使用var关键字var关键字有什么意义?我对使用隐式键入而不是显式键入感到有点困惑。正如MSDN在C#编码标准中引用的那样:当赋值的右侧显示变量的类型时,或者当确切的类型不重要时,对局部变量使用隐式类型。我的问题是,当我们已经知道底层变量类型时,为什么我们需要在这里使用隐式类型?有什么好处?请帮助澄清我的疑惑。以此为例:varq=fromcinmyCollectionselectnew{c.Value1,c.Value2};我们不能在这里确定q的数据类型,因为它是运行时生成的“匿名类型”,这就是我们已经知道底层变量类型的情况下为什么需要在这里使用隐式类型的主要目的?有什么好处?它只是为了方便编码、快速打字,而且如果你愿意的话,你的行会变短。最后,在这种情况下,类型在赋值的右侧可见。当您知道底层类型时,您从隐式类型化变量中获得的唯一优势是,如果您更改原始类型(对于兼容类型),则不必重新定义它们。基本上,隐式类型变量的最大优点是分配往往很长且不断变化的类型(如linq枚举或可查询)看看这个:Collection>>x=newCollection,Action>>();现在看看这个:varx=newCollection>>();而且,我敢,我敢告诉你,使用var关键字没有任何风险。注意:这是基于我没有提及的项目中的实际陈述。您可能认为使用var关键字有一些缺点,嗯,确实有,但它们都是在编译时出现的。您的可执行文件一如既往。没错,varvs.object,dynamic,variant,什么都没有!相反,它告诉编译器使用您分配给它的任何类型来声明变量。例如:varx=1;x=“某事”;//错误!!!好吧,这听起来可能很愚蠢。“我知道这种类型”——你说——“为什么我爱不释手?”-你问-“看,这很简单:”intx=1;好吧,有以下三个原因:创建文本转换模板或最后一点在处理代码片段时特别有用,而且在日常复制粘贴中也很有用。但是,考虑一下您是否更改了某些神秘方法的返回类型……假设您有:ListMamboJambo(){//...}现在您已将其更改为:IListMamboJambo(){//...}不好了!您现在必须更新50个类。你在等什么?不,你没有!因为您一直在关注alwaysusevaradvice。注意:好吧,这不是一个现实的例子,它仍然能说明问题。var关键字用于变量声明而不是类型。var的技术术语是“隐式类型局部变量声明”。变量本身仍然是静态类型的(类型在编译代码时确定),并且仍然是强类型的(一旦声明就不能改变类型)。不同的是,我们不再在源代码中显式声明变量的类型;相反,编译器从变量的初始化中推断出变量的类型。例如:varmaxValue=500;varcustomerFirstName="吉米";varstopwatch=newSystem.Timers.Timer();在此示例中,maxValue是使用System.Int32类型编译的,customerFirstName是System.String,秒表是System.Timers.Timer。如果不是很明显,当用var声明变量时,声明中的初始化程序是必需的。另外,初始化器对它有一些限制,包括:必须是返回类型的表达式;例如,匿名函数声明(如lambda)是无效的,但文字表达式和对象构造函数是允许的。它不能返回空类型。它不能引用声明的变量。每份声明只允许一份声明;不允许多次声明。更多信息:http://www.techrepublic.com/blog/programming-and-development/code-concepts-cs-var-keyword/1461它声明了一个隐式类型的变量。也就是说,在编译时它自己确定类型,因此您不必键入它。它的主要目的是声明一个变量,比如你想要一个匿名方法。基本上它允许您键入更少,仅此而已,从代码阅读器的角度来看,最好指定可能的确切类型。以上就是C#学习教程:c#.Net中“var”关键字的含义是什么?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: