C# new 出一個 class 後,可透過 ‘.’ 來呼叫其底下的 function 來使用。然而若該 class 內的 function 沒有你需要的,而你又拿不到 source code 來修改,是否有其他方法可以增加進去呢?

如果該 class 內的方法沒有自己需要的,C# 提供了一種透過靜態方法當作擴充方法來假裝是該 class 內本身的方法來擴充自己需要的方法進去:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/// 
/// 作為擴充方法的 class 必須為 靜態類別 static class
///
public static class MyExtensionClass
{
///
/// 靜態類別內的方法也必須是靜態方法,並且透過 this 關鍵字來告訴 compiler 這是一個 Size 的擴充方法
///
///
///
public static int GetRectangleArea(this Size size)
{
return size.Width * size.Height;
}
}

例如 Size 本來沒有算矩形面積的方法,而我經常會需要計算,因此我就加了一個算矩形面積的擴充方法。
使用上就會非常的方法快速:

1
2
3
4
5
6
7
8
9
10
11
12
private static void Main(string[] args)
{
var size = new Size(1920, 1080);
var rectangle = size.GetRectangleArea();
Console.WriteLine($"{size}'s Area = {rectangle}");

Console.ReadKey();
}

///
/// {Width=1920, Height=1080}'s Area = 2073600
///

完整的 sample code 我放在 github 上了,歡迎下載玩玩看!

github sample code:https://github.com/leoli-git/MySampleCode/tree/main/MyExtension


✏以上就是如何添加擴充方法的範例,
💡希望對正在閱讀的你也有幫助,若有誤的地方也歡迎指教。
❓若有什麼疑問歡迎下方留言,我會盡速回復您!


支持|不只是個工程師

若我的文章對您有幫助, 歡迎 請我喝杯咖啡 ☕

或是 訂閱「不只是個工程師」👍
也歡迎登入 LikeCoin,點擊下方拍手按鈕👇,免費支持 Leo!
或成為讚賞公民,每月用一杯咖啡贊助 Leo,共創美好的內容創作生態。

相關文章