前一篇了解LINQ是IEnumerable的擴充方法(Extension Method)後,這篇就來自己寫擴充方法。
首先,有個問題:
為什麼LINQ能直接.
出來使用,而不用先new呢?
提示:使用類別(Class)中的方法時,都要先new實例化一個物件,才能使用方法。除了一個情況…
答:
沒錯,不用懷疑就是static
!
用static靜態宣告欄位或方法後,就不需要new出類別實例就可以直接呼叫方法了。
而LINQ方法都是static
。
擴充方法
- 必用
static
◾ 擴充方法是一種靜態方法
◾ 所以不用new關鍵字,就能直接.
出來了 - 必用
this
關鍵字
用this
作為第一個參數,這樣 C# 編譯器才能識別出這是一個擴充方法。 - 除了對IEnumerable做擴充方法,也可以對任何型別做擴充方法。
- 擴充方法允許在不修改原始類型的情況下,向現有類型添加新的方法。
範例:
寫一個將字元合併為字串的擴充方法
void Main()
{
var c = new List<char> {'d','f','u','o','w'};
c.FormCharToString().Dump();
//可以直接.出來使用
//上面等於Extension.FormCharToString(c).Dump();
}
//寫一個將字元合併為字串的擴充方法
public static class CharExtension
{
public static string FormCharToString(this IEnumerable<char>c)//this關鍵字
{
string result=String.Empty;
//上面等於string result="";
foreach (var element in c)
{
result+=element.ToString();
}
return result;
}
}
// result: dfuow
謝謝觀看,此為新手的學習筆記整理,若有錯誤,煩請指正🙏