C#中的"扩展方法"是什么意思?

yon*_*236 4 c#

任何人都可以解释这一点,(初学者的方法).谢谢..

Car*_*ñoz 6

扩展方法只是静态类中的静态方法,其行为类似于在其他类中定义的方法.
在类型前的第一个参数中,关键字thiswich表示这是一个扩展方法.

例:

public static class Extensions
{
    public static object ExtensionMethodForStrings( this string s, object otherParameter)
    {
        //....
        return //whatever you want to return or not
    }
}
Run Code Online (Sandbox Code Playgroud)

这是System.String上的一个扩展方法,它接受两个参数: - string s:这是实例变量 - object otherParameter:你可以拥有任意多个参数,包括none

您可以通过两种方式调用此方法:

静态方式:

string s = "Your string";
object o = new object(); // or whatever you want
object result = Extensions.ExtensionMethodForStrings(s,o);
Run Code Online (Sandbox Code Playgroud)

扩展方式方式

string s = "Your string";
object o = new object(); // or whatever you want
object result = s.ExtensionMethodForStrings(o);
Run Code Online (Sandbox Code Playgroud)

在第二种情况下,它的工作方式就好像类型字符串有一个名为ExtensionMethodForStrings的实例方法.实际上对于编译器来说是等价的.

  • +1表示您仍然可以将其称为普通静态方法.不仅如此,你还可以在`null`引用上调用它.在编写方法时,记住这两个事实是很重要的; 不要只假设`this`参数不能为空. (2认同)