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,共创美好的内容创作生态。

相关文章