您的位置:首页 > 编程语言 > C#

C# 3.0新特性之扩展方法

2008-06-12 11:50 543 查看
C#3.0扩展方法是给现有类型添加一个方法。

//Demo--1 //扩展基本类型 namespace TestExtensionMethods {

// 必须建一个静态类,用来包含要添加的扩展方法 public static class Extensions {

//要添加的扩展方法必须为一个静态方法

//此方法参数列表必须以this开始 第二个即为要扩展的数据类型,在这里就是要扩展string类型

//第三个就无所谓了,就是一对象名,名字随便,符合命名规则即可

//综合来讲,此方法就是要给string类型添加一个叫TestMethod的方法,此方法返回一个int型的值,即返回调用此方法对象的长度。

}

//测试扩展方法类

}

//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("abc");

Console.WriteLine(mes);

}

}

}
现在类型既可是基本数据类型(如int,String等),也可以是自己定义的类。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: