c# - 哪一个更好? "var"还是 "DataType"?

标签 c# variables .net-4.0 c#-4.0

<分区>

哪个声明变量更好或更快?

var ds = new Class1();

Class1 ds = new Class1();

我自己认为第二个应该更快,因为编译器不需要寻找类型 Class1,但是像 ReSharper 这样的一些插件总是通知我改变 Class1var.
谁能解释一下为什么?

最佳答案

它们编译为相同的 IL,因此两者都不会更快。但是,可读性可能会有很大差异。

倾向于支持显式声明变量的类型,但如果出现以下任何情况,则使用var:

  • 我正在调用构造函数并且类型名称很长(尤其是泛型)
  • 我正在使用匿名类型
  • 类型名称​​合理长,初始化表达式也很长,但仍然非常清楚它将返回什么类型
  • 我想强调代码的目的,而不是它如何实现结果

与许多可读性问题一样,关于在何处使用 var 存在广泛的意见 - 从“无处”到“无处不在”。请注意,您可以在选项中更改 ReSharper 为您推荐的内容。 (我似乎记得默认情况下它会双向“推荐” - 所以实际上它只是让您更容易切换。)

几个答案提到了涉及的击键次数。我认为这是支持 var最糟糕可能的理由。我很少(如果有的话)在打字速度上遇到瓶颈。我的编码速度在很大程度上取决于我对问题领域的理解,以及我对解决方案的想象有多清晰。我宁愿输入 2000 次击键,但最终得到一个优雅的设计,实际上用 100 个字符表示,而不是键入仅仅 500 次击键以获得可读性较差的 500 字符设计。想想花在阅读代码上的时间,而不是打字的技巧。

关于c# - 哪一个更好? "var"还是 "DataType"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3858484/

相关文章:

c# - 在 C# 中列出类似于 C++ 中的 vector.reserve(n) 的内容

c# - 可以结合 C#.net、VB.net 和 ASP.net 吗?

PHP mysql_query() 手动输入日期有效 PHP 变量无效

c# - 在转发器中定义变量?

delphi - .NET 4.0 中的 P/Invoke 环境是否发生了变化?

c# - 如何转到最后单击的数据 GridView 中的行

Javascript - 使用引用的动态名称访问变量的值

wcf - web.config文件中compilation debug属性有什么影响?

c# - 订阅者方法与事件

c# - 在 c# 中仅使用 getter 和 List 时出现问题