我知道 msdn 可能应该是第一个去的地方,并且会在我在这里获得独家新闻之后。 msdn 不会真正提供的技术规范的一部分是我现在要问的:
- 该主题在日常开发过程中究竟有何用处?
- 它与 clr 内的匿名类型是否有任何形状或形式的相关性?
- 它允许做什么,否则就无法完成没有它的事情?
- 哪些 .net 功能取决于主题,并且如果不作为框架的一部分就不可能存在?
为了说明问题的具体情况,如果使用 lambda 和类型推断调用方法,了解(以伪代码)编译器如何实际确定所需的类型将非常有趣
我希望看到编译器关于如何定位该类型的逻辑流程。
C# 中的很多地方都会发生类型推断,至少有以下几处:
- The
var
关键字,它告诉编译器根据初始化变量推断(推导)变量的正确类型
- 能够将类型参数排除在泛型方法调用之外,只要它们可以从参数中推导出来即可
- 能够从 lambda 表达式参数中省略类型,只要它们可以被推导即可
并回答您的问题:
1)它节省了大量的输入,特别是在使用所谓的“LINQ方法”时。比较例如
List<string> myList = new List<string>();
// ...
IEnumerable<string> result = myList.Where<string>((string s) => s.Length > 0)
.Select<string, string>((string s) => s.ToLower());
versus
var myList = new List<string>();
// ...
var result = myList.Where(s => s.Length > 0).Select(s => s.ToLower());
2)我不知道你所说的“相关性”是什么意思,但没有var
关键字你不能让变量以类型安全的方式引用匿名类型(你总是可以使用object
or dynamic
),这使得它在使用匿名类型时非常重要。
3)据我所知,没有什么。这只是一个便利功能。当然,它的缺失会使前面提到的匿名类型变得不太有用,但它们也主要是一个方便的功能。
4)我认为3)也回答了这个问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)