你所说的“是什么意思?”;“扩展方法”;在C#中?

你所说的“是什么意思?”;“扩展方法”;在C#中?,c#,C#,其他人能解释一下吗(初学者方法)。谢谢 扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,但它们被调用时就像它们是扩展类型上的实例方法一样。对于用C#和Visual Basic编写的客户机代码,调用扩展方法和在类型中实际定义的方法之间没有明显的区别 .扩展方法是静态类中的静态方法,其第一个参数前面有关键字this C#编译器有一些语法糖,可以将调用x.Foo(bar)转换为SomeExtension.Foo(x,bar

其他人能解释一下吗(初学者方法)。谢谢

扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,但它们被调用时就像它们是扩展类型上的实例方法一样。对于用C#和Visual Basic编写的客户机代码,调用扩展方法和在类型中实际定义的方法之间没有明显的区别


.

扩展方法是静态类中的静态方法,其第一个参数前面有关键字
this

C#编译器有一些语法糖,可以将调用
x.Foo(bar)
转换为
SomeExtension.Foo(x,bar)
。LINQ广泛使用这种方法(Take、Skip、Where、Select等),但如果您愿意,也可以编写自己的扩展方法

这个问题包括许多有用的扩展方法示例:


扩展方法是一种行为(在某种程度上)类似于类成员的方法,但它不是该类的成员。它可以在该类的成员上调用,但没有对该类内部的引用

扩展方法是静态方法,必须是静态类的成员

public static class StringExtensions
{
    public static string HtmlEncode(this string dataString)
    {
        return HttpServerUtility.HtmlEncode(dataString);
    }
}
第一个参数类型之前的关键字“this”将其标识为扩展方法及其扩展的类

可以这样使用:

string foo = "bar";
string myOutput = foo.HtmlEncode();

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

例如:

public static class Extensions
{
    public static object ExtensionMethodForStrings( this string s, object otherParameter)
    {
        //....
        return //whatever you want to return or not
    }
}
这是System.String上的扩展方法,它接受两个参数: -字符串s:这是实例变量 -对象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的实例方法一样。实际上,对于编译器来说,它们是等价的

谢谢你的回答……:)感谢您花时间在搜索框中键入“扩展方法c#”。哦,等等。您没有这样做。+1指出您仍然可以将其作为普通静态方法调用。不仅如此,您还可以在
null
引用中调用它。在编写方法时,记住这两个事实很重要;不要仅仅假设
这个
参数不能为空。