扩展方法
原创
©著作权归作者所有:来自51CTO博客作者我的流浪国的原创作品,请联系作者获取转载授权,否则将追究法律责任
扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。 对于用 C#、F# 和 Visual Basic 编写的客户端代码,调用扩展方法与调用在类型中实际定义的方法没有明显区别。
扩展方法可以理解为现有的类型(现有类型可以为自定义的类型和.Net 类库中的类型)扩展(添加)应该附加到该类型中的方法
它们的第一个参数指定该方法作用于哪个类型,并且该参数以 this 修饰符为前缀。 扩展方法当然不能破坏面向对象封装的概念,所以只能是访问所扩展类的public成员。
using System;
using Microsoft.VisualBasic;
using static System.Console;
namespace newIterator1
{
class Program
{
static void Main(string[] args)
{
Student student=new Student(100,50);
student.Learning();
WriteLine(student.GetAvg());
string str = "hello";
str.SayHello();
ReadKey();
}
}
public class Student
{
public double width, height;
public Student(double width, double height)
{
this.width = width;
this.height = height;
}
public double Sum()
{
return width + height;
}
}
public static class StudentExten
{
public static void Learning(this Student student)
{
WriteLine("Student is Learing");
}
public static double GetAvg(this Student student)
{
return student.Sum() / 2;
}
}
// 必须是一个静态类
public static class StringExten
{
//必须为public static 类型,且参数使用this关键字
public static void SayHello(this string str)
{
WriteLine("扩展方法"+str);
}
}
}