Jon*_*eet 23
当您使用匿名类型作为投影时,它主要用于LINQ:
var query = from person in employees
where person.Salary > 10000m
select new { FullName=person.Name, person.Department };
Run Code Online (Sandbox Code Playgroud)
这里的类型query
不能显式声明,因为匿名类型没有名称.(在实际情况下,匿名类型通常包含来自多个对象的值,因此没有一个命名类包含所有属性.)
当您使用可能很长的类型名称初始化变量(通常由于泛型)并且仅调用构造函数时,它也非常有用 - 它会增加信息密度(减少冗余).这两行中的信息量相同:
List<Func<string, int>> functions = new List<Func<string, int>>();
var functions = new List<Function<string, int>>();
Run Code Online (Sandbox Code Playgroud)
但第二个以更紧凑的方式表达它.
当然,这可能会被滥用,例如
var nonObviousType = 999999999;
Run Code Online (Sandbox Code Playgroud)
但是当类型的变量显而易见时,我相信它可以显着提高可读性.