7. 扩展方法
扩展方法就是给一个既有的类添加新的方法,这在以前是不可思议的事情,在C#3.0里却是很简单:
public static class MethodsExtentions
{
public static double Distance(this Point pointA, point pointB)
{
return Math(Sqrt(Math.Pow(pointA.X – pointB.X, 2) + Math.Pow(pointA.Y – pointB.Y, 2));
}
}
现在这个Distance方法就附加到Point类上了,记住这个方法必须是静态的,它的类也必须是静态的,被附加的类是其第一个参数,而且前面必须加上关键字this,后面的参数就成为扩展方法的参数。使用的时候Distance()方法可以直接当作Point的实例方法来使用:
Point ptA = new Point(3, 4);
Point ptB = new Point(5, 6);
double distance = ptA.Distance(ptB);
Console.WriteLine(distance);
8. 分部方法
C#2.0支持分部类,即把一个类的定义放在多个文件中,每个类使用partial关键字修饰。现在C#3.0在分部类的基础上支持分部方法,即在一个分部类中声明方法,在另外一个分部类中实现这个方法。
对于分部方法,限制较多:
- a. 分部方法使用partial修饰,且返回类型必须是void
- b. 分部方法可以有ref参数,但不能有out参数
- c. 分部方法是隐式私有的(private),因而不能是虚方法(virtual)
- d. 分部方法不能是外部的(extern)
- e. 分部方法可以有static和unsafe修饰符
- f. 分部方法可以是泛型的。
- g. 可以把已经定义且实现了的分部方法创建为委托,但对仅定义的分部方法则不可以。
9. LINQ
LINQ是一种新的编程模型,它通过在.NET语言中直接集成查询支持来实现对数据的访问,简单地说就是在C#3.0中用类似于SQL查询语句的写法来查询数据,从而节省许多代码,提高生产力。数据源可以是对象、DataSet、SQL、XML等,如下图所示:
(1). LINQ to Objects
即从任何IEnumerable或者IEnumerable集合中直接查询数据。比如从一个人名组成的数组中查找所有以“G”开头的人,那么可以这样写代码:
string[] allNames = {"Jeffrey", "Kirby", "Gabriel", "Philip", "Ross", "Adam", "Alston", "Warren", "Garfield"};
IEnumerable foundNames = from name in allNames
where name.StartsWith("G")
select name;
看起来和SELECT语句有点像,但是有点奇怪,但是它至少不用我们写循环遍历这个数组了。上面的LINQ语句返回的是一个IEnumerable集合,利用隐式类型,可以再简化一点代码:
var foundNames = from name in allNames
where name.StartsWith("G")
select name;
对得到的结果可以用foreach输出:
foreach (string name in foundNames)
{
Console.WriteLine(name);
}
稍微复杂一点儿的LINQ例子:
var foundNames = from name in allNames
where name.StartsWith("G") || name.Contains("by")
orderby name
select name;
看起来更像SELECT语句了。
(2)LINQ to DataSet(略)
(3) LINQ to SQL(略)
分享到:
相关推荐
C# 3.0 3.5 新特性 总结 最新在网上好不容易搜集的资料。
介绍C# 3.0新语言特性和改进内容,帮助开发人员更了解VS2008中的C#语言
C#3.0,在短短几年中,微软就对C#进行了两次大的升级,为C#加入了许多新的特性,从而使C#变得更加强大也更加现代了
c# 3.0 新特性(en)
VS2008下c#3.0新特性之var源码
相信能给大家一个崭新的认识,深刻的学习c#语言。
C# 3.0新语言特性在.NET2.0基础上进行了改进,这些改进的功能可以大大简化我们编写程序。
学习设计模式的好书。 本书为那些充满奥秘的设计模式提供了有效的C#3.0实现。” 如果想加速.NET应用程序的开发,你...本书条理清晰地介绍了经典的面向对象设计模式,并解释了怎样运用最新的C#3.0语言特性来编写它们。
文档全面介绍了C#3.0的语言特性。以及和2.0的不同和更新的结构 内容。和大家分享。
C#3.0在此基础上进行一定改进,方便我们编写程序,并把主要的精力放在业务逻辑的实现上,减少重复工作,例如新特性中自动属性把字段的封装更加集成化了,把更多的重复工作交给了编译器来做,首先介绍下.NET框架版本...
视频_c#3.0,VB9.0 新特性介绍
vs2008视频教程 vs2008视频教程
C# 3.0 入门系列 主要介绍C#3.0新增特性dlinq的学习
本文档介绍了C#3.0的新特性以及这些新特性与LINQ的关系。内容为英文
webcast关于C#3.0新特性的视频教程及相应的PDF,包括 Linq ,Lambda 等新技术
先依次介绍一下C# 3.0新语言特性和改进,然后从一条一条LINQ语句分析来贯穿LINQ的知识点。最后通过一个实例程序实战Linq to sql带来全新的编程体验。
这是微软提供的最新的C# 3.0例子,其中囊括了C#3.0的新特性,及LINQ的使用。对学习C#3.0的朋友们很有参考价值,值得下载!
Visual Studio 2008开发新特性系列课程(2):C#3.0与VB9.0的新特性介绍
C#3.0(C#Orcas——魔鬼)在C#2.0的基础上引入了很多语言扩展,用以支持高级别的函数式风格类库的创建和使用。这些扩展使得结构性API构造具有与其他领域(如关系数据库和XML)中查询语言同等的表达能力。这些扩展...
C#设计模式利用新的C#3.0语言和.NET 3.5框架中的特性来实现开发社区中广为人知的23种设计模式。本书包含了揭示每种模式在实际中如何运用的丰富案例,以及对于模式及其最佳使用场合和最佳组合方式的富有洞察力的...