栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用“ var”会影响性能吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用“ var”会影响性能吗?

var
关键字没有额外的IL代码:对于非匿名类型,生成的IL应该相同。如果编译器由于无法弄清您打算使用哪种类型而无法创建该IL,则会出现编译器错误。

唯一的技巧是,

var
如果您要手动设置类型,则将推断出您可能已选择接口或父类型的确切类型。


8年后更新

由于我的理解发生了变化,我需要对此进行更新。我现在认为,

var
在方法返回接口的情况下,可能会影响性能,但是您应该使用确切的类型。例如,如果您具有以下方法:

IList<int> Foo(){    return Enumerable.Range(0,10).ToList();}

考虑以下三行代码来调用该方法:

List<int> bar1 = Foo();IList<int> bar = Foo();var bar3 = Foo();

所有这三个编译并按预期执行。但是,前两行 并不
完全相同,第三行将匹配第二行,而不是第一行。因为的签名

Foo()
是返回
IList<int>
,所以编译器将如何构建
bar3
变量。

从性能的角度来看,大多数情况下您不会注意到。但是,在某些情况下,第三行的性能可能不如第一行的性能快。当您继续使用

bar3
变量时,编译器可能无法以相同的方式分派方法调用。

请注意,抖动有可能(可能甚至)消除这种差异,但不能保证。
通常,

var
就性能而言,您仍应考虑成为非关键因素。当然,它根本不像使用
dynamic
变量。但是要说它根本没有改变可能是夸大了它。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/426312.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号