大家好,
我最近看到了很多使用var
的代码。
E.g:
var myString = GetAnyString();
var myInstance = GetClass();
而不是
string myString = GetAnyString();
MyClass myInstance = GetClass();
除了可读性(我认为使用var
不是很易读),使用它有什么优点和/或缺点吗?性能如何
答案 0 :(得分:21)
这是主观的,但我不喜欢使用变量。至于我,他们没有提高可读性。
但var
用法的一般准则如下:
当绝对清楚声明变量的类型时,请使用var
:
Dictionary<string, Dictionary<string, string>> varOfSomeLongType = new Dictionary<string, Dictionary<string, string>>();
或当您声明匿名类型的变量时:
var linqResult = from element in SomeCollection
select new { element.A, element.B }
答案 1 :(得分:13)
var由具有正确类型的编译器替换,因此除了非常小的编译时间开销之外,没有运行时性能损失(veeeeeeeery small)。
实际上,从vue的可读性角度来看,我个人如下:
变量实例化:object myVar = new object();
变量传播:var myVar = anotherVar.getComplexObject();
此外,当您进行非常复杂的类型实例化时,您可能会想要使用它们,例如:
var myDict = new Dictionary<string, List<Tuple<string, object>>>();
在这里,它确实提高了可读性。
答案 2 :(得分:4)
使用它有什么优点和/或缺点吗?
优点:减少打字。
(我认为使用var不太可读)
我部分同意这一点。
如果您var s = foo();
而不是string s = foo;
,则可读性较差。在其他情况下,它可以更具可读性。
性能如何
在运行时没有区别。编译器将其转换为相同的中间代码,就像您明确说明类型一样。