簡體   English   中英

C#中的“擴展方法”是什么意思?

[英]What do you mean by “extension methods” in C#?

任何人都可以解釋這一點,(初學者的方法)。 謝謝..

擴展方法只是靜態類中的靜態方法,其行為類似於在其他類中定義的方法。
在類型之前的第一個參數中,關鍵字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:你可以擁有任意多個參數,包括none

您可以通過兩種方式調用此方法:

靜態方式:

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#和Visual Basic編寫的客戶端代碼,調用擴展方法和實際在類型中定義的方法之間沒有明顯區別。

關於擴展方法的C#文章

擴展方法是靜態類中的靜態方法,其第一個參數前面是關鍵字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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM