关键字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作为它的第一个参数类型,并在后面跟着它所扩展的类的名称。
好了,扩展方法就说到这里了。