小編給大家分享一下C#中擴展方法的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

擴展方法
擴展方法使您能夠向現有類型“添加”方法,而無需創建新的派生類型、重新編譯或以其他方式修改原始類型。擴展方法是一種特殊的靜態方法,但可以像擴展類型上的實例方法一樣進行調用。對于用 C# 和 Visual Basic 編寫的客戶端代碼,調用擴展方法與調用在類型中實際定義的方法之間沒有明顯的差異。
如果我們有這么一個需求,將一個字符串的第一個字符轉化為大寫,第二個字符到第n個字符轉化為小寫,其他的不變,那么我們該如何實現呢?
不使用擴展方法:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ExtraMethod
{
//抽象出靜態StringHelper類
public static class StringHelper
{
//抽象出來的將字符串第一個字符大寫,從第一個到第len個小寫,其他的不變的方法
public static string ToPascal(string s,int len)
{
return s.Substring(0, 1).ToUpper() + s.Substring(1, len).ToLower() + s.Substring(len + 1);
}
}
class Program
{
static void Main(string[] args)
{
string s1 = "aSDdAdfGDFSf";
string s2 = "sbfSDffsjG";
Console.WriteLine(StringHelper.ToPascal(s1,3));
Console.WriteLine(StringHelper.ToPascal(s2, 5));
}
}
}
使用擴展方法:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ExtraMethod
{
class Program
{
static void Main(string[] args)
{
string s1 = "aSDdAdfGDFSf";
string s2 = "sbfSDffsjG";
Console.WriteLine(s1.ToPascal(3));
Console.WriteLine(s2.ToPascal(5));
}
}
//擴展類,只要是靜態就可以
public static class ExtraClass
{
//擴展方法--特殊的靜態方法--為string類型添加特殊的方法ToPascal
public static string ToPascal(this string s, int len)
{
return s.Substring(0, 1).ToUpper() + s.Substring(1, len).ToLower() + s.Substring(len + 1);
}
}
}
通過上面兩種方法的比較:
1.代碼在訪問ToPascal這樣的靜態方法時更為便捷。用起來就像是被擴展類型確實具有該實例方法一樣。
2.擴展方法不改變被擴展類的代碼,不用重新編譯、修改、派生被擴展類
定義擴展方法
1.定義一個靜態類以包含擴展方法。
2.該類必須對客戶端代碼可見。
3.將該擴展方法實現為靜態方法,并使其至少具有與包含類相同的可見性。
4.方法的第一個參數指定方法所操作的類型;該參數必須以 this 修飾符開頭。
請注意,第一個參數不是由調用代碼指定的,因為它表示正應用運算符的類型,并且編譯器已經知道對象的類型。 您只需通過 n 為這兩個形參提供實參。
注意事項:
1.擴展方法必須在靜態類中定義
2.擴展方法的優先級低于同名的類方法
3.擴展方法只在特定的命名空間內有效
4.除非必要不要濫用擴展方法
以上是“C#中擴展方法的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創新互聯成都網站設計公司行業資訊頻道!
另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
標題名稱:C#中擴展方法的示例分析-創新互聯
網站網址:http://www.js-pz168.com/article22/disocc.html
成都網站建設公司_創新互聯,為您提供電子商務、自適應網站、面包屑導航、定制網站、關鍵詞優化、網站制作
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯