C#:扩展方法

0

当某个类的属性和方法已经写好的时候,我们想要增加额外的功能时,却又不想改变原有的类(自定义的类)或无法改变原有的类(系统的类如 String),又该怎么办?

使用扩方法可以达到要求。

(1)扩展方法所在的类必须是静态类

(2)扩展方法不能和调用的方法放到同一个类中

(3)第一个参数必须要,并且必须是this Object,这是扩展方法的标识。如果方法里面还要传入其他参数,可以在后面追加参数

(4)最好保证扩展方法和调用方法在同一个命名空间下

例如我们想扩展系统类 String ,增加额外的一个方法 GetNoNullStr() :

//扩展方法必须在静态类中,且不能和调用的地方属于同一个类
static class My 
    {
        private static double PI = 3.14;
        private static String name = "LIUYAN";
        
        
        //还可以给任何对象进行扩展,如:this object

        public static String GetNoNullStr(this String str) { //this String 必须为第一个参数 表示为String类的扩展方法
            if (str == null) {
                return String.Empty;
            }
            else {
                return str;
            }
        }

        public static String GetNoNullStr(this String str, out int a) { //带一个参数a
            a = 10;
            if (str == null) {
                return String.Empty;
            }
            else {
                return str;
            }
        }

    }

----------------------------------------------------------------------------------
//另一个地方,调用扩展方法
            int a = 0;
            String s  = Console.ReadLine();
            s = s.GetNoNullStr();       //s本身为参数
            s = s.GetNoNullStr(out a);  //除s之外,还加一个参数a



扩展自己的类和上面的使用流程一样。

 

 

 

你可能感兴趣的:(C#)