C# 第十四弹 —————— 扩展方法

关键字this,这是一个很实用的方法,尤其是Unity3D中更为实用哦。

继续举个栗子,eg:

class Test
{
    private double d1;
    private double d2;
    private double d3;
    public Test(double d1, double d2, double d3)
    {
        this.d1 = d1;
        this.d2 = d2;
        this.d3 = d3;
    }

    public double Sum()
    {
        return d1 + d2 + d3;
    }
}

static class ExterndData
{
    public static double Average(Test t)
    {
        return t.Sum() / 3;
    }
}

类:Program

class Program
{
    static void Main(string[] args)
    {
        Test t = new Test(3, 4, 5);
        Console.WriteLine("三个数的平均数:" + ExterndData.Average(t));
        Console.ReadKey();
    }
}

结果:

其实重要的不是结果,重要的是静态调用的那一段,如果我们这么想呢,直接实用实例调用Average的方法呢,那岂不是更方便么?那么应该如何做到呢?下面上代码!

class Test
{
    private double d1;
    private double d2;
    private double d3;
    public Test(double d1, double d2, double d3)
    {
        this.d1 = d1;
        this.d2 = d2;
        this.d3 = d3;
    }

    public double Sum()
    {
        return d1 + d2 + d3;
    }
}

static class ExterndData
{
    public static double Average(this Test t)
    {
        return t.Sum() / 3;
    }
}

在静态方法参数中添加一个this的关键字就好了,调用的话是这样子的。

class Program
{
    static void Main(string[] args)
    {
        Test t = new Test(3, 4, 5);
        Console.WriteLine("三个数的平均数:" + t.Average());
        Console.ReadKey();
    }
}

这里直接使用t.Average()就好了,是不是很方便,那么扩展方法需要注意那些呢?

     1.声明扩展方法的类必须为static

     2.扩展方法本身必须声明为static

     3.扩展方法必须包含关键字this作为它的第一个参数类型,并在后面跟着它所扩展的类的名称。

好了,扩展方法就说到这里了。

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