C#如何对一个类添加拓展方法
2016-04-06 00:27
459 查看
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();
}
}
通过上述demo,我可以得到如果要实现一个拓展方法必须要完成三个部分:
□ 声明拓展方法的类必须声明为static。
□ 拓展方法本身必须声明为static。
□ 拓展方法必须包含关键字this作为它的第一个参数类型,并在后面跟着它所拓展的类的名称。
{
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作为它的第一个参数类型,并在后面跟着它所拓展的类的名称。
相关文章推荐
- 【C#进阶系列】20 异常和状态管理
- C#Base64编码
- C# winform程序防止前台卡死
- c# 一些细节
- c# 一些细节 之动态对象和匿名对象
- c#winform选择文件,文件夹,打开指定目录方法
- c# 一维数组和二维数组的定义几种方式
- Combobox使用
- C#中集合汇总
- C#委托和事件
- C# 基础知识 1
- C#多态之虚方法
- C#程序中session值的保存方法以及转为字符串的方法总结
- C#程序中session的基本设置示例及清除session的方法
- C#中DllImport用法
- C#实现属于自己的QQ截图工具
- C#一般处理程序 ashx.cs使用Session报错问题
- C#线程处理系列之线程池中的I/O线程
- C#委托基础:谈委托和接口
- C# 命名规范