1.定義:
(1)擴展方法能使你能夠向現有類型添加“添加”方法,而無需創建新的派生類型,重新編譯或以其他方式修改原始類型。
(2)擴展方法是一種特殊的靜態方法,但可以像擴展類型上的實例方法一樣調用。
注:
(1)擴展方法的第一個參數指定該方法作用於那個類型,並且此參數用this為前綴修飾。僅當你使用using指令將命名空間顯示導入到源碼之中后,擴展方法才位於范圍中。
(2)在代碼中,可以使用實例方法語法調用改擴展方法,但是,編譯器生成的中間語言(IL)會將代碼轉換為對靜態方法的調用。因此,並未真正 違反封裝原則,實際上,擴展方法無法訪問到他們所擴展類型中的私有變量。
(3)不能重寫擴展方法
(4)與接口或者類具有相同名稱和簽名的擴展方法永遠不會被調用(編譯時優先級:實例方法 > 擴展方法)
(方法簽名:c#中指返回值和參數)
2. 簡單代碼示例:
步驟一:定義擴展方法,namespace為PipelineExtensions
namespace PipelineExtensions { public static class StringExtensions { // 擴展方法---計算字符串長度 public static int WordCount(this string str) { return str.Length; } } }
步驟二:使用此擴展方法
(1)先通過using把namespace引入到使用文件中
(2)使用擴展方法 WordCount(this string str)中的第一個參數類型string為類型的參數調用此擴展方法
using PipelineExtensions; using System; namespace Pipeline { public class Program { public static void Main(string[] args) { string ex = "yx123456"; int count = ex.WordCount(); Console.WriteLine(count); Console.ReadKey(); } } }