任何人都可以解释这个,(初学者的方法)。感谢..
答案 0 :(得分:6)
扩展方法只是静态类中的静态方法,其行为与在其他类中定义的方式相同
在类型前的第一个参数中,关键字this
表示这是一种扩展方法。
示例:
public static class Extensions
{
public static object ExtensionMethodForStrings( this string s, object otherParameter)
{
//....
return //whatever you want to return or not
}
}
这是System.String上的一个扩展方法,它接受两个参数: - string s:这是实例变量 - object otherParameter:你可以拥有任意多个,包括无
您可以通过两种方式调用此方法:
静态方式:
string s = "Your string";
object o = new object(); // or whatever you want
object result = Extensions.ExtensionMethodForStrings(s,o);
扩展方法
string s = "Your string";
object o = new object(); // or whatever you want
object result = s.ExtensionMethodForStrings(o);
在第二种情况下,它的工作方式就好像类型字符串有一个名为ExtensionMethodForStrings的实例方法。实际上对于编译器来说是等价的。
答案 1 :(得分:2)
扩展方法使您可以向现有类型“添加”方法,而无需创建新的派生类型,重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,但它们被称为扩展类型的实例方法。对于用C#和Visual Basic编写的客户端代码,调用扩展方法和实际在类型中定义的方法之间没有明显区别。
答案 2 :(得分:1)
扩展方法是静态类中的静态方法,其第一个参数前面有关键字this
。
C#编译器有一些语法糖,可以将x.Foo(bar)
的调用转换为SomeExtension.Foo(x, bar)
。 LINQ(Take,Skip,Where,Select等)广泛使用它,但如果您愿意,也可以编写自己的扩展方法。
这个问题包括许多有用的扩展方法的例子:
答案 3 :(得分:0)
扩展方法是一种行为(有点),就像它是类的成员一样,但它不是该类的成员。它可以在该类的成员上调用,但没有引用该类的内部。
扩展方法是静态方法,必须是静态类的成员。
public static class StringExtensions
{
public static string HtmlEncode(this string dataString)
{
return HttpServerUtility.HtmlEncode(dataString);
}
}
第一个参数类型之前的关键字“this”将此标识为扩展方法,并将其扩展为类。
它将以这种方式使用:
string foo = "bar";
string myOutput = foo.HtmlEncode();