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 版本引入了一系列重要的新特性,极大地提升了开发效率和代码的可读性。以下是对这些特性的详细解释: 1. **林克(LINQ)**:语言集成查询(Language Integrated Query)是 C# 3.0 的核心特性之一,它...
本书作为初学者的指南,详细解释了这些新特性,包括但不限于自动实现属性、匿名类型、扩展方法、查询表达式、动态调用等,这些都是C# 3.0版本中最吸引人的特性之一。 ### 自动实现属性 自动实现属性是C# 3.0新增的...
本文将详细介绍 C# 3.0 中的一些关键新特性,并通过具体示例来解释这些特性的应用。 #### 自动实现的属性 (Auto-Implemented Properties) C# 3.0 引入了自动实现的属性这一概念,这使得定义只包含 getter 和 ...
LINQ(Language Integrated Query,语言集成查询)是C# 3.0中的明星特性,它提供了一种统一的方式来处理各种数据源,如数据库、XML文档、集合等。LINQ的核心是查询表达式,它采用类似SQL的语法进行数据检索。例如: ...
C# 3.0是微软在.NET Framework 3.5中推出的重要版本,它极大地扩展了C#语言的功能,引入了一系列创新的编程特性,旨在提高开发效率和代码可读性。以下将详细介绍C# 3.0的一些核心知识点: 1. **匿名方法与Lambda...
【标题】:“vs2008视频教程 2 C#3.0与VB9.0的新特性介绍” 本视频教程聚焦于Visual Studio 2008中的编程语言C# 3.0和Visual Basic 9.0的最新特性。Visual Studio 2008作为微软开发工具的重要组成部分,它在提升...
2. Lambda表达式:这是C# 3.0引入的一项重要特性,允许你简洁地定义匿名函数,常用于 LINQ 查询表达式中。 3. 匿名类型:在C# 3.0中,你可以创建没有明确类型的对象,这在处理临时数据时非常方便。 4. 局部类型...
在本书中,你将学习到如何利用C# 3.0的新特性进行面向对象编程,如泛型、委托、事件、属性和接口。此外,还将探索.NET 3.5框架下的高级主题,如并发控制、异常处理、反射、元数据以及与.NET Framework库的深度集成。...
在C# 3.0中,最重要的新特性之一是 LINQ (Language Integrated Query,语言集成查询)。LINQ允许开发者以一种直观、类型安全的方式处理数据,无论数据源是数据库、XML文档还是其他集合。通过使用LINQ,代码变得更加...
这本书是C#开发者的重要参考资料,涵盖了C# 3.0的新特性和核心概念,旨在帮助程序员理解和掌握这个强大的.NET框架语言。 C# 3.0在C# 2.0的基础上引入了许多创新性功能,其中最显著的是对面向服务编程的支持和语言...
C# 3.0是.NET Framework 3.5的一部分,带来了许多新的语言特性和改进,旨在提高开发效率和代码简洁性。以下是对这些特性的详细解释: 1. **自动属性(Auto-Implemented Properties)** 自动属性是C# 3.0引入的一个...
C#3.0作为其一个重要里程碑,引入了多项新特性,如匿名方法、Lambda表达式、扩展方法和Linq(Language Integrated Query),极大地提高了程序员的生产力。 在《C#3.0完全自学宝典》中,读者将全面了解到C#的基础...
14. **动态类型**:虽然这个特性是在C# 4.0中引入的,但与C# 3.0的很多特性有关,因为它允许在运行时绑定到对象的方法和属性,这在与非C#语言交互时特别有用。 总的来说,C# 3.0通过引入一系列强大的新特性,显著...
C# 3.0 是微软.NET Framework 3.5的一部分,是C#语言的一个重要版本,引入了许多新特性,使得编程更加简洁、高效。在这个入门系列中,我们将深入探讨C# 3.0的关键概念,帮助初学者快速掌握这门强大的编程语言。 1. ...
通过这些案例,读者不仅能够掌握C# 3.0的基本语法和高级特性,还能了解到实际开发中的常见问题和解决方案。这些源文件提供了一个动手实践的平台,使理论知识与实际操作相结合,对于提升编程技能大有裨益。对于初学者...
根据提供的文件信息,本文将围绕"C#3.0本质论"这一主题展开,深入探讨C#3.0版本的关键特性、改进以及它在.NET框架中的应用。虽然提供的链接无法直接访问,但我们可以基于标题和描述中提及的信息进行讨论。 ### C#...
在C# 3.0中,Visual Studio 2008引入了一系列的新特性,极大地提升了开发效率和代码可读性。其中,`var`关键字是一个非常显著的改变,它允许开发者进行隐式类型声明,是匿名类型的基石。下面将详细探讨`var`的关键字...
C# 3.0 是C#编程语言的一个重要版本,引入了多项新特性,极大地提升了开发效率和代码的可读性。以下是对这些特性的详细解释: 1. **自动属性(Auto-Implemented Properties)**: 自动属性允许开发者快速创建只包含...
本系列课程旨在深入讲解这些新特性,帮助开发者充分利用C# 3.0的功能,提升开发效率和代码质量。 首先,C# 3.0中的最大亮点之一是 LINQ(Language Integrated Query,语言集成查询)。这是一个强大的查询表达式,...
课程(1)则作为一个整体的概述,会介绍C# 3.0的主要新特性,除了Linq和Lambda外,可能还会涵盖匿名类型、自动属性、扩展方法等。这部分内容对于初学者来说非常重要,因为它帮助构建对C# 3.0新特性的全面认识,为后续...