`

C# 3.0新特性之扩展方法

    博客分类:
  • C#
阅读更多

C#3.0扩展方法是给现有类型添加一个方法。现在类型既可是基本数据类型(如int,String等),也可以是自己定义的类。

 

//Demo--1
//扩展基本类型
namespace TestExtensionMethods
{
// 必须建一个静态类,用来包含要添加的扩展方法
public static class Extensions
{
//要添加的扩展方法必须为一个静态方法
//此方法参数列表必须以this开始 第二个即为要扩展的数据类型,在这里就是要扩展string类型
//第三个就无所谓了,就是一对象名,名字随便,符合命名规则即可
//综合来讲,此方法就是要给string类型添加一个叫TestMethod的方法,
此方法返回一个int型的值,即返回调用此方法对象的长度。
public static int TestMethod(this string s)
{
return s.Length;
}
}
//测试扩展方法类
class Program
{
static void Main(string[] args)
{
string str = "Hello Extension Methods";
//调用扩展方法,必须用对象来调用
int len = str.TestMethod();
Console.WriteLine(len);
}
}
}
//Demo--2
//扩展自定义类型,同时展示了扩展方法带参数情况,以及方法重载
namespace TestExtendMethod
{
public class Student
{
public string Description()
{
return "Student.............";
}
public string Description(string name)
{
return "the student’s name is "+name;
}
}
// 必须建一个静态类,用来包含要添加的扩展方法
public static class Extensions
{
//要添加的扩展方法必须为一个静态方法
//此方法参数列表必须以this开始 第二个即为要扩展的数据类型,在这里就是要扩展Student类型
//第三个就无所谓了,就是一对象名,名字随便,符合命名规则即可
//综合来讲,此方法就是要给Student类型添加一个叫TestMethod的方法,此方法返回一个string型的值
public static string TestMethod(this Student s)
{
return s.Description();
}
//要添加的扩展方法必须为一个静态方法
//此方法参数列表第一个参数表示要扩展哪一个类,第二个参数才表示此扩展方法的真正参数
//综合来讲,此方法就是要给Student类型添加一个叫TestMethod的方法,
此方法带有一个string类型的参数,并返回一个string型的值
public static string TestMethod(this Student s,string name)
{
return s.Description(name);
}
}
//测试扩展方法类
class Program
{
static void Main(string[] args)
{
Student stu = new Student();
//调用扩展方法,必须用对象来调用
string mes = stu.TestMethod();
Console.WriteLine(mes);
//调用带参数的扩展方法,只要传第二个参数就可以了
//因为他的第一个参数其实只是为了表明是扩展哪个数据类型
mes = stu.TestMethod("李沉舟");
Console.WriteLine(mes);
}
}
}
 总结:

  1、扩展方法是给现有类型添加一个方法;

  2、扩展方法是通过 指定关键字this修饰方法的第一个参数;

  3、扩展方法必须声明在静态类中;

  4、扩展方法要通用对象来调用;

  5、扩展方法可以带参数。

原文:http://tech.ddvip.com/2008-01/119955698139982.html

分享到:
评论

相关推荐

    VS2008 c#3.0新特性之var源码

    此外,C# 3.0还引入了扩展方法,这是一种可以在不修改原有类的情况下向该类添加新方法的方式。扩展方法定义在一个静态类中,接收一个参数,并且第一个参数前有`this`修饰符,表示该方法可以被作为实例方法调用。这在...

    C#3.0新特性 NET2.0基础上进行了改进

    扩展方法是 C# 3.0 中的另一个重要特性,它允许我们向现有类型添加新的静态方法。这种方法不会改变原始类型的实现,而是通过静态方法的形式为该类型提供了额外的功能。 **示例代码**: ```csharp // 定义扩展方法 ...

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

    3. **扩展方法**:扩展方法使得开发者可以在不修改已有类型的情况下为其添加新方法。这在许多情况下,特别是进行库或框架的开发时非常有用。 4. **自动实现的属性**:C# 3.0引入了自动实现的属性,简化了类的定义,...

    c# 3.0 新特性(en)

    查询表达式(又称LINQ查询)是C# 3.0中最显著的新特性之一,它提供了SQL-like的语法来操作各种数据源。查询表达式结合了Lambda表达式、类型推断和其他新特性,简化了数据查询和转换。 ```csharp var query = from ...

    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语言特性

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

    C# 3.0:A Beginner’s Guide

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

    c#3.0入门经典教程

    3. 扩展方法:为了实现LINQ,C# 3.0引入了扩展方法,可以在不修改现有类的情况下为其添加新方法。 4. 表达式树:LINQ的基础是表达式树,它可以表示代码的结构,使得编译器和运行时能解析并执行查询。 三、匿名方法...

    C#3.0完全自学宝典.rar

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

    C#3.0新语法总结

    扩展方法使得可以在不修改原有类型的情况下为其添加新方法。扩展方法必须定义在静态类中,只能作为静态方法存在,但可以像实例方法一样被调用。它们在查找方法时的优先级低于实例方法,只有在找不到实例方法匹配时才...

    C#3.0 in a nutshell

    4. **扩展方法**:扩展方法允许将新方法添加到已存在的类型中,而无需继承或使用装饰器模式。这在提供工具方法或者扩展第三方库时非常有用。 5. **偏函数和部分应用**:C# 3.0引入了偏函数的概念,它允许你提前提供...

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

    扩展方法则允许向已存在的类型添加新方法,而无需继承或使用装饰器模式。 .NET Framework 3.5是.NET Framework的一个重要版本,它包含Windows Presentation Foundation (WPF)、Windows Communication Foundation ...

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

    C# 3.0还引入了扩展方法,这是一种可以为已存在的类型添加新方法而无需继承或使用装饰器的设计模式。扩展方法使得第三方库可以为.NET框架类型或者用户自定义类型添加功能,而不会破坏封装性。我们会在课程中了解如何...

    C# 3.0 入门系列

    扩展方法允许我们向已存在的类型添加新方法,而无需继承或使用装饰者模式。这对于增强库的功能非常有用,例如`System.Linq`命名空间中为所有IEnumerable类型添加的许多LINQ方法。 4. **自动属性**: 自动属性简化...

    C# 3.0 完全参考手册

    4. **扩展方法**:扩展方法允许开发者向已存在的类型添加新方法,而无需继承或使用装饰器模式。这增强了代码的灵活性,如`Enumerable`类中的各种扩展方法用于操作IEnumerable接口实例。 5. **自动属性**:自动属性...

    C#3.0本质论

    扩展方法使开发人员能够向现有类型添加新方法,而无需修改该类型的源代码。这是通过在静态类中定义方法并使用`this`关键字指定目标类型来实现的。例如: ```csharp public static class StringExtensions { public...

    C# 3.0 3.5 新特性 总结

    1. **林克(LINQ)**:语言集成查询(Language Integrated Query)是 C# 3.0 的核心特性之一,它允许开发者使用统一的查询语法对各种数据源(如数组、集合、XML、数据库等)进行查询。LINQ 包括 LINQ to SQL(用于...

    C# 3.0的新特性学习

    C# 3.0是.NET Framework 3.5的一部分,发布于2007年,引入了许多创新性特性和改进,极...从匿名类型到LINQ,从扩展方法到隐式类型,每项新特性都为C#开发者提供了更强大的工具,使其能够写出更简洁、更易于理解的代码。

    C# 3.0 锐利体验系列课程

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

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

    此外,C# 3.0的扩展方法允许我们向已存在的类型添加新方法,而无需继承或使用装饰者模式。这为代码复用和模块化提供了更多可能。还有,C# 3.0中的Lambda表达式是配合LINQ的关键,它是一种简洁的函数定义方式,使得...

Global site tag (gtag.js) - Google Analytics