雷夏珀 当然是这么认为的,并且开箱即用,它会提醒您进行转换

Dooberry dooberry = new Dooberry();

var dooberry = new Dooberry();

这真的被认为是最好的风格吗?

有帮助吗?

解决方案

这当然是风格问题,但我同意 Dare 的观点: C# 3.0 隐式类型声明:到 var 还是不到 var?. 。我认为使用 var 而不是显式类型会使您的代码可读性较差。在以下代码中:

var result = GetUserID();

什么是结果?一个 int、一个字符串、一个 GUID?是的,这很重要,但不,我不需要深入研究代码才能知道。这在代码示例中尤其烦人。

杰夫就此写了一篇文章,说 他喜欢var. 。但这家伙疯了!

我看到了 stackoverflow 成功的模式:挖掘旧的 CodingHorror 帖子并(危险边缘风格)用问题来表达它们。

其他提示

只有当 var 是什么很明显时我才使用它。

我清楚:

XmlNodeList itemList = rssNode.SelectNodes("item");
var rssItems = new RssItem[itemList.Count];

我不清楚:

var itemList = rssNode.SelectNodes("item");
var rssItems = new RssItem[itemList.Count];

我见过的答案的最佳总结是 埃里克·利珀特的评论, ,这实质上是说,如果类型很重要,则应该使用具体类型,否则不要使用。本质上,类型信息应该保留在类型重要的地方。

我公司的标准是在任何地方都使用 var,这是我们后来采用的 阅读各种建议,然后花一些时间尝试一下,看看缺少带注释的类型信息是有帮助还是有障碍. 。我们觉得这是一个帮助。

人们链接到的大多数建议(例如Dare 的一个)是由从未尝试过使用 var 而不是具体类型进行编码的人提出的建议。这使得这些建议几乎毫无价值,因为它们不是根据经验得出的,而只是推断。

我能给你的最好建议就是亲自尝试一下,看看什么对你和你的团队有效。

@jongalway - var 并不一定会让你的代码更难以阅读。

var myvariable = DateTime.Now
DateTime myvariable = DateTime.Now;

第一个与第二个一样可读,并且需要更少的工作

var myvariable = ResultFromMethod();

在这里,你有一个观点,var 可能会降低代码的可读性。我喜欢 var 因为如果我将小数更改为双精度,我不必在很多地方更改它(并且不要说重构,有时我忘记了,就让我 var 吧!)

编辑: 刚刚读了文章,我同意。哈哈。

我有一种感觉,这将成为 Stack Overflow 上最受欢迎的问题之一。这归结为偏好。无论您认为哪个更具可读性。我更喜欢 var 当类型定义在右侧时,因为它更简洁。当我从方法调用中分配变量时,我使用显式类型声明。

对此@进行了很好的讨论 编码恐怖

就我个人而言,我尝试将其使用保持在最低限度,我发现它会损害可读性,尤其是在从方法调用分配变量时。

像 ReSharper 这样的工具的优点之一是,您可以按照自己喜欢的方式编写代码,然后将其重新格式化为更易于维护的内容。我将 R# 设置为始终重新格式化,以便实际使用的类型可见,但是,在编写代码时我几乎总是键入“var”。

好的工具可以让您两全其美。

约翰。

只有当您事先不知道类型时,它才有意义。

“最佳风格”是主观的,并且根据上下文而变化。

有时,或者如果您不确定给定函数的返回类型,使用“var”比键入一些非常长的类名更容易。我发现在使用 Linq 或 for 循环声明时更多地使用“var”。

其他时候,使用完整的类名会更有帮助,因为它比“var”更好地记录代码。

我觉得这要由开发商来决定。没有灵丹妙药。没有“唯一正确的方法”。

干杯!

不,不 总是 但很多时候我都会说。类型声明并不比匈牙利表示法有用多少。您仍然遇到相同的问题,即类型可能会发生变化,尽管重构工具很有帮助,但与不必更改指定类型的位置(除了单个位置之外)相比,这并不理想,这遵循“不要重复自己”原则。

任何可以为变量及其值指定类型名称的单行语句都绝对应该使用 var,特别是当它是长 Generic< OtherGeneric< T,U,V>, Dictionary< X, Y>>> 时

有一个 非常好的MSDN文章 关于这个主题,它概述了一些不能使用 var 的情况:

以下限制适用于隐式类型变量声明:

  • 仅当在同一语句中声明并初始化局部变量时,才能使用var;该变量不能初始化为null,或将方法组或匿名函数初始化。
  • var 不能用于类范围内的字段。
  • 使用VAR声明的变量不能在初始化表达式中使用。换句话说,这种表达是合法的:整数 i = (i = 20);但是此表达式会产生编译时错误:var i = (i = 20);
  • 在同一语句中不能初始化多个隐式类型的变量。
  • 如果命名var的类型在范围中,则VAR关键字将解析为该类型名称,并且不会被视为隐式键入本地变量声明的一部分。

我建议您检查一下以了解在代码中使用 var 的完整含义。

我看到了stackoverflow成功的模式:根据问题来挖掘旧的CodingHorror帖子和(危险风格)的话。

我认罪无罪!不过你说得对,这似乎是一个比较热门的小问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top