class MyData
{
private double D1;
private double D2;
private double D3;
public MyData(double d1, double d2, double d3)
{
D1 = d1;
D2 = d2;
D3 = d3;
}
public double Sum()
{
return D1 + D2 + D3;
}
}
static class ExtendMyData
{
public static double Average(this MyData md)
{
return md.Sum() / 3;
}
}
class Program
{
static void Main(string[] args)
{
MyData md = new MyData(1, 2, 3);
Console.WriteLine("Sum:{0}", md.Sum());
Console.WriteLine("Average:{0}", md.Average());
Console.Read();
}
{
private double D1;
private double D2;
private double D3;
public MyData(double d1, double d2, double d3)
{
D1 = d1;
D2 = d2;
D3 = d3;
}
public double Sum()
{
return D1 + D2 + D3;
}
}
static class ExtendMyData
{
public static double Average(this MyData md)
{
return md.Sum() / 3;
}
}
class Program
{
static void Main(string[] args)
{
MyData md = new MyData(1, 2, 3);
Console.WriteLine("Sum:{0}", md.Sum());
Console.WriteLine("Average:{0}", md.Average());
Console.Read();
}
}
通过上述demo,我可以得到如果要实现一个拓展方法必须要完成三个部分:
□ 声明拓展方法的类必须声明为static。
□ 拓展方法本身必须声明为static。
□ 拓展方法必须包含关键字this作为它的第一个参数类型,并在后面跟着它所拓展的类的名称。