【问题标题】:Is gratuitous use of 'var' keyword considered harmful? [duplicate]无故使用“var”关键字是否有害? [复制]
【发布时间】:2010-04-29 00:42:47
【问题描述】:

可能重复:
Use of var keyword in C#

我几乎一直使用它,除非我没有立即分配给变量,在这种情况下它不是一个选项。好还是坏?

【问题讨论】:

  • 有趣的是,您可以投票结束自己的问题 :)
  • +1 用于在您发现问题重复时关闭您自己的问题!

标签: c# .net coding-style


【解决方案1】:

使用的隐式类型变量(var关键字)是:

  • 很棒:当您需要匿名类型时。
  • :当类型很明显时 (var sb = new stringbuilder();)
  • 不好:当类型不是很明显时 (var doc = repo.getdocs("base");)

如果您发现自己经常使用,那可能没问题。一直使用它意味着有时人们将不得不调查以查看您使用的是什么类型。打印输出应该很清楚正在使用什么类型。

【讨论】:

  • 但是...可以将鼠标悬停在getdocs函数上...我们作为Python黑客我非常喜欢var。
  • 但与此同时,人们不应该工作。这是一个平衡。我自己经常使用隐式输入。 (今年夏天我将进入 Python。等不及了!)
  • 悬停是一种痛苦,当您在 IDE 之外时不起作用。我宁愿只看到明确声明的类型。打字有那么难吗?有些人太懒了。
  • 我的鼠标一定有问题 - 当我将鼠标悬停在“repo.getdocs”上时,我什么也没看到!
【解决方案2】:

您必须在易于书写和易于阅读之间找到自己的平衡点。当然,您可以将鼠标悬停在变量的下一次使用上以查看推断的类型,但如果您没有阅读 IDE 中的代码,这可能是个问题。

我最近遇到的一个极端情况是,我试图用Bar 的实例(改进的Foo)手动替换我项目中Foo 的特定实例。我会为Foo 执行查找全部,结果我错过了一些,因为我已经完成了var quux = GetSomething(),其中GetSomething 返回了Foo 的一个实例。但是,这有点极端,在使用 var 时,我不会太重视这一点。

【讨论】:

    【解决方案3】:

    这显然是推荐的方式(如果您使用 Resharper 之类的工具,默认情况下会建议尽可能用 'var' 替换特定类型)。我个人更喜欢使用特定类型来提高可读性。但是,如果代码质量好且方法长度正常,即使使用了“var”,它仍然可读。这里有一个关于这个主题的冗长讨论:Use of var keyword in C#

    否则,使用 var 不会影响性能(它不像使用 'object' 和类型转换)。

    【讨论】:

      猜你喜欢
      • 2010-12-17
      • 1970-01-01
      • 2013-09-04
      • 2012-04-04
      • 1970-01-01
      • 2013-04-19
      • 1970-01-01
      • 2010-09-22
      • 2011-09-30
      相关资源
      最近更新 更多