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,谢谢。

posted @ 2017-09-11 15:02  Mileres  阅读(348)  评论(0编辑  收藏  举报