【发布时间】:2010-09-26 06:58:42
【问题描述】:
之前我问了一个关于 why I see so many examples use the varkeyword 的问题,得到的答案是,虽然它只对匿名类型是必需的,但它仍然用于使编写代码“更快”/更容易和“仅仅因为”。
在this link ("C# 3.0 - Var Isn't Objec") 之后,我看到var 在 IL 中被编译为正确的类型(您将在文章的中途看到它)。
我的问题是,如果有的话,使用 var 关键字的 IL 代码会占用多少,如果在任何地方都使用它,它是否甚至接近于代码性能的可测量水平?
【问题讨论】:
-
问题在很久以前就已经回答了,只是想针对 var 添加一件事 - 尽管在编译时已解决,但 Visual Studio 的“查找所有引用”和 Resharper 的“查找用法”没有正确发现它,如果你想要找到该类型的所有用法 - 它不会被修复,因为它太慢了。
-
@KolA 使用
var声明的变量绝对可以与 Visual Studio 2019 中的“查找所有引用”一起使用,因此如果它被破坏,它已经被修复。但我可以确认它早在 Visual Studio 2012 就可以工作,所以我不确定你为什么声称它不起作用。 -
@Herohtar 尝试以下代码 "class X { } X GetX() { return new X(); } void UseX() { var x = GetX(); }" 并查找对 X 的所有引用,“var x = GetX()”位未突出显示-截至目前,在最新的 VS2019 中,这就是我的意思。如果您使用“X x = GetX()”而不是 var,它会突出显示
-
@KolA 啊,我明白你的意思了——当你在
X上使用“查找所有引用”时,var不会被视为对X的引用。有趣的是,如果您在该语句中对var使用“查找所有引用”,它将显示对X的引用(尽管它仍然不会列出var语句)。此外,当光标在var上时,它将突出显示同一文档中X的所有实例(反之亦然)。
标签: c# performance variables var