C#中的扩展方法
2015-01-18 19:45
225 查看
有这么一个类MyData,定义如下:
class MyData
{
private double D1;
private double D2;
private double D3;
public MyData(double d1,double d2,double d3)
{
<span style="white-space:pre"> </span>D1=d1:
<span style="white-space:pre"> </span>D2=d2;
<span style="white-space:pre"> </span>D3=d3;
}
public double Sum()
{
<span style="white-space:pre"> </span> return D1+D2+D3;
}
}
如果我想在另一个类当中定义一个方法,使得MyData可以使用它,那么我可以使用扩展类。比如我在另一个类ExtendMyData中想定义一个类,来计算D1,D2,D3的平均值。具体也就是可以声明MyData md,然后使用md.Average(),而不是使用ExtendMyData的实例。如下:
sealed class MyData
{
private double D1;
private double D2;
private double D3;
public MyData(double d1,double d2,double d3)
{
<span> </span>D1=d1:
<span> </span>D2=d2;
<span> </span>D3=d3;
}
public double Sum()
{
<span> </span> return D1+D2+D3;
}
}
然后就可以使用md.Average()
扩展方法的重要要求如下:
声明扩展方法的类必须为static。
扩展方法本身必须声明为static。
扩展方法必须包含关键字this作为它的第一个参数类型,并在后面跟着它所扩展的类的名称。
class MyData
{
private double D1;
private double D2;
private double D3;
public MyData(double d1,double d2,double d3)
{
<span style="white-space:pre"> </span>D1=d1:
<span style="white-space:pre"> </span>D2=d2;
<span style="white-space:pre"> </span>D3=d3;
}
public double Sum()
{
<span style="white-space:pre"> </span> return D1+D2+D3;
}
}
如果我想在另一个类当中定义一个方法,使得MyData可以使用它,那么我可以使用扩展类。比如我在另一个类ExtendMyData中想定义一个类,来计算D1,D2,D3的平均值。具体也就是可以声明MyData md,然后使用md.Average(),而不是使用ExtendMyData的实例。如下:
sealed class MyData
{
private double D1;
private double D2;
private double D3;
public MyData(double d1,double d2,double d3)
{
<span> </span>D1=d1:
<span> </span>D2=d2;
<span> </span>D3=d3;
}
public double Sum()
{
<span> </span> return D1+D2+D3;
}
}
static class ExtendMyData
{
public static double Average(this MyData md)
{
return md.Sum()/3;
}
}
然后就可以使用md.Average()
扩展方法的重要要求如下:
声明扩展方法的类必须为static。
扩展方法本身必须声明为static。
扩展方法必须包含关键字this作为它的第一个参数类型,并在后面跟着它所扩展的类的名称。
相关文章推荐
- C# 3.0新特性初步研究 Part2:使用扩展方法
- C# 3.0新特性初步研究 Part2:使用扩展方法_C#教程
- Linq的那些事——从Linq扩展方法回顾C#语言基础
- c#中的扩展方法
- 向C#的String类添加按字节截取字符串的扩展方法
- C# 3.0语言新特性(语言规范):2 扩展方法
- 从C# 3.0说以人为本(三)—— 扩展方法
- C#2008新特性--(扩展方法)Extension Method
- C#3.5语言新特性(四)-扩展方法
- 实例 C#3.0与C#2.0相比之新特性(二)---扩展方法
- C# 中的扩展方法---Extension methods in C#
- C# 3.0新特性初步研究 Part2:使用扩展方法_C#教程
- C# 3.0新特性初步研究 Part2:使用扩展方法_C#教程
- 不能不说的C#特性-扩展方法
- C# 3.0 扩展方法 实践
- 初探C# 3.0 (1) - 隐式类型变量, 扩展方法, Lambda表达式
- (二)初学C# 3.0之扩展方法
- C# 3.0 扩展方法 实践
- 向C#的String类添加按字节截取字符串的扩展方法
- 扩展方法(C# 3.0 语言)