数据类型已知时使用var关键字

时间:2013-11-26 09:53:11

标签: c# anonymous-types

我越来越注意到我们的开发人员优先使用关键字var来实际投射类型,作为示例

var check = context.ALLProducts.Any();

显然Any()只会返回一个布尔值,因此就我而言应该设置为布尔值。我还看到了一些例子,其中var用于返回Int或string的函数或任何我认为不应该是var的类型。

所以我的问题是 - 除了代码可读性和可支持性之外,是否有任何真正的原因我应该将var用于所有内容?如果可能的话,我想加强我的论点,除了说我不喜欢它。

2 个答案:

答案 0 :(得分:2)

不确定链接是否涵盖了这一点,但使用var关键字的正面是需要重构模型的情况。

获取一个函数需要更改返回值类型的实例,但新类型与前一个类型共享许多(如果不是全部)属性。如果你使用var,你将几乎没有重构,如果有的话。

真实世界的示例可能是开发人员从存储库返回dto,而不是在绑定之前将其转换为viewmodel。如果您为模型使用了var并将其设置为已翻译的视图模型,则可能在操作中很少/不会重构以调整更改的类型。

答案 1 :(得分:1)

您发布的代码与使用bool

完全相同
var check = context.ALLProducts.Any();

如果你这样声明,你根本无法将非布尔放入check

作为一个例子,这个程序会给你一个编译器错误;

class Program
{
    public static void Main()
    {
        var check = true;
        check = 1;
    }
}
  

常量值'1'无法转换为'bool'


优点是打字少,特别是如果你的类型是

System.Namespace.ReallyReallyLongTypeName thing = SomeFactory.GetObject();

当然,缺点是您不能只看一眼代码并立即知道它是什么类型。