C#在简单类型的情况下过度使用var?

C#在简单类型的情况下过度使用var?,c#,C#,只需阅读C#编码注释,就可以看到这个代码片段()。他们建议在这个循环中使用var而不是int var syllable = "ha"; var laugh = ""; for (var i = 0; i < 10; i++) { laugh += syllable; Console.WriteLine(laugh); } var音节=“ha”; var=”; 对于(变量i=0;i

只需阅读C#编码注释,就可以看到这个代码片段()。他们建议在这个循环中使用var而不是int

var syllable = "ha";
var laugh = "";
for (var i = 0; i < 10; i++)
{
    laugh += syllable;
    Console.WriteLine(laugh);
}
var音节=“ha”;
var=”;
对于(变量i=0;i<10;i++)
{
笑+=音节;
控制台。写线(笑);
}

这让我觉得非常奇怪,我想不出你为什么要这么做。在foreach循环中,这很公平,但是当有简单而明显的类型可用时?

使用var对于可读性更有意义。当查看具有长名称的类型时,您是否真正看到了以下用法:

var myInstance=new DatabaseContextProcessingShipData()

DatabaseContextProcessingShipData myInstance=new DatabaseContextProcessingShipData()


使用var可以消除冗余,并且更易于阅读。

示例通常简短扼要,在这种情况下可能没有多大意义


在“真实”代码中,当您的类型具有长名称时,它有助于在键入时进行保存(因为通常可以清楚地知道在迭代时将得到哪种类型)。

编译器无论如何都会用所需的类型替换var,因此根本不涉及IL代码

我建议(并多次阅读)在类名变大时使用它

        Dictionary<SuperLongClassName, AnotherSuperLongClassName> dict = new Dictionary<SuperLongClassName, AnotherSuperLongClassName>();
        var dict2 = new Dictionary<SuperLongClassName, AnotherSuperLongClassName>();
Dictionary dict=new Dictionary();
var dict2=新字典();

因为它是编译器的帮助,所以没有错或对,但我通常只在直接创建对象并且名称变大时才使用它。

它取决于需求。 可读性确实很重要,
var
并不总是能提高可读性。考虑一个例子:

var totalSum = PriceCalculator.GetTotalSum(order); 
我怎么知道总数是多少。是十进制吗?还是一门金钱课?它如何提高可读性?当我看到代码时:

decimal totalSum = PriceCalculator.GetTotalSum(order); 
我知道totalSum是一个简单的值,我可以相应地使用它。我知道从中可以得到什么。
当然,在某些情况下,使用
var
可以使代码更好(例如,当变量的类型太长时)。但在某些情况下,最好知道你在处理什么。所以这一切都取决于具体情况。

问题是:为什么不呢?我在我的代码中使用了90%的usw var。很明显这里用的是哪种类型的。绝对正确。不要用var替换简单类型,尤其是int。这会使代码更像一个谜。不过,您是否需要为更复杂的类型(如带有泛型的类型)使用它。一句话,就是清晰性。为什么要让别人去假设呢?这个问题(目前的情况)会引起人们的意见(见目前为止的答案)。你可能会问:优势和劣势是什么?请参阅现有的讨论:。我从多个中选择了一个。在这个例子中。是的,使用var。但在初始化简单int或字符串时不使用。然后var会降低代码的可读性。