C#3.0中var关键字的优点

重复:

什么使用var或对象名称类型

我无法理解C#3.0中var关键字的需求使用它的优点是什么? 我看到这个问题,但不明白使用它的真正目的


它主要针对LINQ,当您可以使用匿名类型作为投影时:

var query = from person in employees
            where person.Salary > 10000m
            select new { FullName=person.Name, person.Department };

这里query的类型不能显式声明,因为匿名类型没有名字。 (在现实世界中,匿名类型通常包含来自多个对象的值,因此没有任何一个名称包含所有属性的类。)

当你使用可能的长类型名称(通常是泛型)初始化一个变量,并调用一个构造函数 - 它会增加信息密度(减少冗余)时,它也非常有用。 这两行中有相同数量的信息:

List<Func<string, int>> functions = new List<Func<string, int>>();
var functions = new List<Function<string, int>>();

但第二个以更紧凑的方式表达它。

当然这可以被滥用,例如

var nonObviousType = 999999999;

但是当它明显表明类型的变量是什么时,我相信它可以显着提高可读性。


其存在的主要原因是在C#中引入匿名类型。 您可以即时创建没有名称的类型。 你会如何指定他们的名字? 答案是:你不能。 你只要告诉编译器为你推断它们:

var user = users.Where(u=> u.Name == "Mehrdad")
                .Select(u => new { u.Name, u.Password });

这是一种声明var的简短方式。 虽然“int i = new int()”不会输入太多,但当你开始使用更长的类型时,最终会看到很多行,如下所示:

SomeReallyLong.TypeName.WithNameSpaces.AndEverything myVar = new SomeReallyLong.TypeName.WithNameSpaces.AndEverything();

最终有人发现编译器已经知道你声明了什么类型,这要感谢你用来初始化var的信息,所以要求编译器在这里做正确的事情并没有太多要求。

链接地址: http://www.djcxy.com/p/53807.html

上一篇: Advantage of var keyword in C# 3.0

下一篇: var vs explicit declaration