扩展方法的使用-创新互联

一、扩展方法的介绍扩展方法的使用

我一般理解一个知识点喜欢拆分去理解,所以对于扩展方法的理解可以拆分为——首先它肯定是一个方法,然而方法又是对于一个类型而言的,所以扩展方法可以理解为现有的类型(现有类型可以为自定义的类型和.Net 类库中的类型)扩展(添加)应该附加到该类型中的方法。

大峪ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!

在没有扩展方法之前,如果我们想为一个已有类型自定义自己逻辑的方法时,我们必须自定义一个新的类型来继承已有类型的方式来添加方法,使用这种继承方式来添加方法时,我们必须自定义一个新的派生类型,如果基类有抽象方法还需要重新去实现抽象方法,这样为了扩展一个方法却会导致因继承而带来的其他的开销(指的是又要去自定义一个派生类,还要覆盖基类的抽象方法等),所以使用继承来为现有类型扩展方法时就有点大才小用的感觉了,并且当我们需要为值类型和密封类(不能被继承的类)这些不能被继承的类型扩展方法时,此时继承就不能被我们所用了, 所以在C#3 中提出了用扩展方法来实现为现有类型添加方法。使用扩展方法来实现扩展可以解决使用继承中所带来的所有的弊端

扩展方法必须具备下面的规则:

它必须在一个非嵌套、非泛型的静态类中
它至少要有一个参数
第一个参数必须加上this关键字作为前缀(第一个参数类型也称为扩展类型,即指方法对这个类型进行扩展)
第一个参数不能用其他任何修饰符(如不能使用ref out等修饰符)
第一个参数的类型不能是指针类型

示例:

创建一个类:

public class Methods
{

}

扩展这个类:

public static class MethodsExtension
{

public static class MethodsExtension
{
  public static void StringToInt(this Methods s,string y)
  {
    Console.WriteLine(Convert.ToInt32(y));
  }
}

}

调用扩展方法:

Methods m = new Methods();

m.StringToInt("1");

对string的扩展:

public static class stringExtension
{

public static void StringToInt(this string s)
{
Console.WriteLine(Convert.ToInt32(s));
}
}

string a = "123";
a.StringToInt();

主要用在封闭类开的类和对系统类的扩展


分享标题:扩展方法的使用-创新互联
本文网址:http://pwwzsj.com/article/ccpigc.html