19

我发现该var关键字极大地有助于减少我的 C# 代码中的噪音,而几乎不损失可读性;我会说我现在只在编译器强迫我使用显式类型时才使用。

我知道使用 var 不会改变我的代码的运行时特性。但是我刚刚想到一个问题:我是否在编译时为编译器现在代表我所做的所有额外工作付出了巨大的代价?

var有没有人做过任何基准测试来看看广泛使用对编译时间有多大的影响?

4

4 回答 4

20

我的建议:尝试两种方式。测量结果。那你就知道了。

我没有做过任何基准测试,即使我做过,也不能回答你的问题。我们不知道你有什么硬件,你的机器上还运行着什么,一个典型的程序是什么样的。我们也不知道您认为什么是可接受或不可接受的表现。你是唯一一个知道这一切的人,所以你是唯一能回答这个问题的人。

于 2010-02-18T16:00:33.580 回答
16

无论如何都需要检查类型,这甚至可以节省时间......好吧,不太可能:)
你不应该关心 - 如果你的开发环境很慢,购买更多内存或一台新计算机。不要改变你编写代码的方式。

于 2010-02-18T10:26:49.270 回答
3

正确的答案是“无法衡量”。有关 C# 编译器在编译时执行的部分(但很长)列表,请看这里:

http://blogs.msdn.com/ericlippert/archive/2010/02/04/how-many-passes.aspx

然后了解类型推断只是该列表中单次传递的一部分。

于 2010-02-18T10:45:23.970 回答
1

无论如何都需要找到右侧的类型来进行类型检查和/或类型转换。将结果分配给变量的类型很便宜。大部分成本(如果有的话)将用于在声明所有局部变量之前允许对表达式进行评估所必须做的事情,但即使您不使用 var,您也要为此付费。(顺便说一句,上述约束有可能甚至可能根本不会损害性能。)

于 2010-02-18T21:56:40.470 回答