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