C#--扩展方法
一、扩展方法的定义及实现
定义:使用一个静态类的静态方法给已有的类(被扩展类型)添加实例方法
实现:声明一个静态类,在静态类声明一个静态方法(给被扩展类型的扩展方法),
扩展方法必须为如下格式:
扩展方法名(this 被扩展类型 形参,...其他参数...)
二、举个栗子
1 using System;
2
3 namespace ArrayListToList.Manager
4 {
5 //被扩展类型
6 public class ExtendedClass
7 {
8 public string name;
9 }
10
11 //扩展方法静态类
12 public static class ExtendMethodClass
13 {
14 //扩展方法
15 public static void ExtendMethod(this ExtendedClass ex, string name, string msg)
16 {
17 string result = name + " " + msg;
18 Console.WriteLine(result);
19
20 }
21 }
22
23 public class Program
24 {
25 static void Main()
26 {
27 ExtendedClass oo = new ExtendedClass();
28 //实例调用
29 oo.ExtendMethod("zhangsan", "I like you");
30
31 //作为静态方法调用
32 //ExtendMethodClass.ExtendMethod(null, "zhangsan", "I like you");
33 }
34 }
35 }
结果:
三、注意点
实例方法调用:必须是对象(实例)才能调用,类型直接调用错误。
方法签名不重复:扩展方法的签名不能是被扩展类中已存在的,否则扩展方法永远不会得到调用(可以理解为扩展方法被覆盖),但可以作为静态方法调用。
四、问题
我不明白为啥需要用扩展方法,知其然不知其所以然,望博友不吝赐教,
评论或email:lzpzsf231@163.com,谢谢。