LINQ学习之旅——准备(1)
其实LINQ在语法上很多都是运用了C#语言的一些特性,C#语言从2.0升级到3.0,并没有升级C#2.0的运行平台CLR,只是在原有语法基础上添加了新的特性,这些特性依赖于C#3.0的编译器。使用C#3.0的编译器编译过的代码可以在支持C#2.0的运行平台CLR上运行,即完全可以在.NET2.0平台上运行编译过的.NET3.0代码。C#2.0中的泛型,匿名方法,以及C#3.0中的Lambda表达式、表达式树以及扩展方法都是LINQ的基础。这一节我将介绍有关C#2.0中的泛型、委托、匿名方法、yield关键字以及IEnumerable接口的知识,这些和LINQ的实现和使用有着密切的关系。是我们学习之旅的第一项准备工作。 1.目前大部分语言都是强类型语言,这些语言要求程序中的变量或对象要有明确的类型,在不同类型之间的转化需要遵守一定的规则。强类型的编程有助于代码的安全性,但因为限制多了,就会显得不够灵活。如下代码所示: 1 int Max(int x,int y)2 {3 if(a<b)4 return b;5 else6 return a;7 } 比较两个整数的大小。但是这两个参数都是强类型int,如果我要比较两个双精度、浮点数类型或两者都有的数据,那就需要在定义几个新的方法了,可是这几个方法最终的方法体确实一样的,这样就使得代码有了冗余性。也许有读者会问