`
netatomy
  • 浏览: 46871 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

c#3.0中的新特性(2)

 
阅读更多

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在分部类的基础上支持分部方法,即在一个分部类中声明方法,在另外一个分部类中实现这个方法。

对于分部方法,限制较多:

  1. a. 分部方法使用partial修饰,且返回类型必须是void
  2. b. 分部方法可以有ref参数,但不能有out参数
  3. c. 分部方法是隐式私有的(private),因而不能是虚方法(virtual)
  4. d. 分部方法不能是外部的(extern)
  5. e. 分部方法可以有static和unsafe修饰符
  6. f. 分部方法可以是泛型的。
  7. g. 可以把已经定义且实现了的分部方法创建为委托,但对仅定义的分部方法则不可以。

9. LINQ

LINQ是一种新的编程模型,它通过在.NET语言中直接集成查询支持来实现对数据的访问,简单地说就是在C#3.0中用类似于SQL查询语句的写法来查询数据,从而节省许多代码,提高生产力。数据源可以是对象、DataSet、SQL、XML等,如下图所示:

image

(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 和 3.5 版本引入了一系列重要的新特性,极大地提升了开发效率和代码的可读性。以下是对这些特性的详细解释: 1. **林克(LINQ)**:语言集成查询(Language Integrated Query)是 C# 3.0 的核心特性之一,它...

    C# 3.0:A Beginner’s Guide

    本书作为初学者的指南,详细解释了这些新特性,包括但不限于自动实现属性、匿名类型、扩展方法、查询表达式、动态调用等,这些都是C# 3.0版本中最吸引人的特性之一。 ### 自动实现属性 自动实现属性是C# 3.0新增的...

    C#3.0一些新语法

    本文将详细介绍 C# 3.0 中的一些关键新特性,并通过具体示例来解释这些特性的应用。 #### 自动实现的属性 (Auto-Implemented Properties) C# 3.0 引入了自动实现的属性这一概念,这使得定义只包含 getter 和 ...

    C# 3.0的新特性学习

    LINQ(Language Integrated Query,语言集成查询)是C# 3.0中的明星特性,它提供了一种统一的方式来处理各种数据源,如数据库、XML文档、集合等。LINQ的核心是查询表达式,它采用类似SQL的语法进行数据检索。例如: ...

    C#3.0完全自学宝典(C#加入了许多新的特性)

    C# 3.0是微软在.NET Framework 3.5中推出的重要版本,它极大地扩展了C#语言的功能,引入了一系列创新的编程特性,旨在提高开发效率和代码可读性。以下将详细介绍C# 3.0的一些核心知识点: 1. **匿名方法与Lambda...

    vs2008视频教程 2 C#3.0与VB9.0的新特性介绍

    【标题】:“vs2008视频教程 2 C#3.0与VB9.0的新特性介绍” 本视频教程聚焦于Visual Studio 2008中的编程语言C# 3.0和Visual Basic 9.0的最新特性。Visual Studio 2008作为微软开发工具的重要组成部分,它在提升...

    c#3.0入门经典教程

    2. Lambda表达式:这是C# 3.0引入的一项重要特性,允许你简洁地定义匿名函数,常用于 LINQ 查询表达式中。 3. 匿名类型:在C# 3.0中,你可以创建没有明确类型的对象,这在处理临时数据时非常方便。 4. 局部类型...

    C# 3.0与.NET 3.5高级编程.rar

    在本书中,你将学习到如何利用C# 3.0的新特性进行面向对象编程,如泛型、委托、事件、属性和接口。此外,还将探索.NET 3.5框架下的高级主题,如并发控制、异常处理、反射、元数据以及与.NET Framework库的深度集成。...

    Programing C# 3.0(5th edition)

    在C# 3.0中,最重要的新特性之一是 LINQ (Language Integrated Query,语言集成查询)。LINQ允许开发者以一种直观、类型安全的方式处理数据,无论数据源是数据库、XML文档还是其他集合。通过使用LINQ,代码变得更加...

    C#3.0 in a nutshell

    这本书是C#开发者的重要参考资料,涵盖了C# 3.0的新特性和核心概念,旨在帮助程序员理解和掌握这个强大的.NET框架语言。 C# 3.0在C# 2.0的基础上引入了许多创新性功能,其中最显著的是对面向服务编程的支持和语言...

    C# 3.0新语言特性和改进

    C# 3.0是.NET Framework 3.5的一部分,带来了许多新的语言特性和改进,旨在提高开发效率和代码简洁性。以下是对这些特性的详细解释: 1. **自动属性(Auto-Implemented Properties)** 自动属性是C# 3.0引入的一个...

    C#3.0完全自学宝典.rar

    C#3.0作为其一个重要里程碑,引入了多项新特性,如匿名方法、Lambda表达式、扩展方法和Linq(Language Integrated Query),极大地提高了程序员的生产力。 在《C#3.0完全自学宝典》中,读者将全面了解到C#的基础...

    C#3.0语言特性

    14. **动态类型**:虽然这个特性是在C# 4.0中引入的,但与C# 3.0的很多特性有关,因为它允许在运行时绑定到对象的方法和属性,这在与非C#语言交互时特别有用。 总的来说,C# 3.0通过引入一系列强大的新特性,显著...

    C# 3.0 入门系列

    C# 3.0 是微软.NET Framework 3.5的一部分,是C#语言的一个重要版本,引入了许多新特性,使得编程更加简洁、高效。在这个入门系列中,我们将深入探讨C# 3.0的关键概念,帮助初学者快速掌握这门强大的编程语言。 1. ...

    C# 3.0完全自学宝典 源文件

    通过这些案例,读者不仅能够掌握C# 3.0的基本语法和高级特性,还能了解到实际开发中的常见问题和解决方案。这些源文件提供了一个动手实践的平台,使理论知识与实际操作相结合,对于提升编程技能大有裨益。对于初学者...

    C#3.0本质论

    根据提供的文件信息,本文将围绕"C#3.0本质论"这一主题展开,深入探讨C#3.0版本的关键特性、改进以及它在.NET框架中的应用。虽然提供的链接无法直接访问,但我们可以基于标题和描述中提及的信息进行讨论。 ### C#...

    VS2008 c#3.0新特性之var源码

    在C# 3.0中,Visual Studio 2008引入了一系列的新特性,极大地提升了开发效率和代码可读性。其中,`var`关键字是一个非常显著的改变,它允许开发者进行隐式类型声明,是匿名类型的基石。下面将详细探讨`var`的关键字...

    C#3.0新语法总结

    C# 3.0 是C#编程语言的一个重要版本,引入了多项新特性,极大地提升了开发效率和代码的可读性。以下是对这些特性的详细解释: 1. **自动属性(Auto-Implemented Properties)**: 自动属性允许开发者快速创建只包含...

    C# 3.0 锐利体验系列课程(1)

    本系列课程旨在深入讲解这些新特性,帮助开发者充分利用C# 3.0的功能,提升开发效率和代码质量。 首先,C# 3.0中的最大亮点之一是 LINQ(Language Integrated Query,语言集成查询)。这是一个强大的查询表达式,...

    C# 3.0 锐利体验系列课程

    课程(1)则作为一个整体的概述,会介绍C# 3.0的主要新特性,除了Linq和Lambda外,可能还会涵盖匿名类型、自动属性、扩展方法等。这部分内容对于初学者来说非常重要,因为它帮助构建对C# 3.0新特性的全面认识,为后续...

Global site tag (gtag.js) - Google Analytics