C#

[C#] 擴充方法(Extension Methods)!

Posted by Harry Chang on April 13, 2016

C# 擴充方法(Extension Methods) ,C# 3.0 的「新」功能,其實也不新了畢竟C# 6.0都要出了。「擴充方法」顧名思義在原生類別擴充新的方法出來供人使用。

我們常使用的String 類別的其中有一個方法為Trim(),這個方法為去掉字串內前後的空白,

1
string tempString=" Word ".Trim();

若我們想要有一個新的方法如「String 轉成 Int」,該如何時做呢?

當然很多人會使用Convert.ToInt32() 的方法:

1
2
    string intStr = "1234567";
    var tempInt = Convert.ToInt32(intStr);

當然這個方法不好,若是字串無法被轉成int 會拋錯誤。

又或者是保險一點的方法 int.TryParse():

1
2
3
    string intStr = "1234567";
    int tempInt = 0;
    int.TryParse(intStr, out tempInt);

但看起來又太過冗長。且若專案上很常使用這種轉換的話,重複的Code 會相當多,

維護起來也不太容易,若是使用擴充方法,我們在程式碼上面看起來會相當簡潔,

以下介紹作法:

1
2
3
4
5
6
    public static int ToInt(this string str)
    {
       int tempInt = 0;
       int.TryParse(str, out tempInt);
       return tempInt;
    }

我們撰寫一個「靜態( static )」的方法ToInt(),回傳值型態為 int,傳入值型態為 String ,

特別的是我們在串入值型態前面加入了一個 「this」,這個意思就是我要對String 這個類別做「擴充方法」,

方法內容就很簡單了,單純的String 轉 int ,

完成後使用方法就超簡單啦,

1
"12345".ToInt();

是不是看起來超簡潔的!!

參考:

https://msdn.microsoft.com/zh-tw/library/bb383977.aspx



icon_wechat.png