国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

c#擴展方法-摘自msdn

2019-11-17 02:33:35
字體:
來源:轉載
供稿:網友
c#擴展方法-摘自msdn

擴展方法使你能夠向現有類型“添加”方法,而無需創建新的派生類型、重新編譯或以其他方式修改原始類型。擴展方法是一種特殊的靜態方法,但可以像擴展類型上的實例方法一樣進行調用。 對于用 C# 和 Visual Basic 編寫的客戶端代碼,調用擴展方法與調用在類型中實際定義的方法之間沒有明顯的差異。

擴展方法編寫代碼:

namespace ExtensionMethods{    public static class MyExtensions    {        public static int WordCount(this String str)        {            return str.Split(new char[] { ' ', '.', '?' },                              StringSplitOptions.RemoveEmptyEntries).Length;        }    }   }

1.必需為靜態方法

2.第一個參數為向哪個類型添加擴展方法(this 類型名稱 形參名稱)

調用時引入命名空間:

using ExtensionMethods;

調用擴展方法與調用在類型中實際定義的方法之間沒有明顯的差異:

string s = "Hello Extension Methods";int i = s.WordCount();

注意:在代碼中,可以使用實例方法語法調用該擴展方法。 但是,編譯器生成的中間語言 (IL) 會將代碼轉換為對靜態方法的調用。 因此,并未真正違反封裝原則。 實際上,擴展方法無法訪問它們所擴展的類型中的私有變量。

可以使用擴展方法來擴展類或接口,但不能重寫擴展方法。與接口或類方法具有相同名稱和簽名的擴展方法永遠不會被調用。 編譯時,擴展方法的優先級總是比類型本身中定義的實例方法低。 換句話說,如果某個類型具有一個名為PRocess(int i)的方法,而你有一個具有相同簽名的擴展方法,則編譯器總是綁定到該實例方法。當編譯器遇到方法調用時,它首先在該類型的實例方法中尋找匹配的方法。 如果未找到任何匹配方法,編譯器將搜索為該類型定義的任何擴展方法,并且綁定到它找到的第一個擴展方法。

通常,建議你只在不得已的情況下才實現擴展方法,并謹慎地實現。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 柞水县| 桑植县| 武乡县| 通江县| 遂川县| 武汉市| 崇义县| 藁城市| 武义县| 陕西省| 温泉县| 呈贡县| 农安县| 滨海县| 高邮市| 嘉鱼县| 界首市| 洪泽县| 齐河县| 金平| 惠东县| 穆棱市| 河东区| 封开县| 砚山县| 汤阴县| 酒泉市| 昔阳县| 武城县| 浦江县| 皮山县| 民权县| 厦门市| 龙里县| 兴仁县| 桦南县| 太湖县| 永吉县| 中方县| 都匀市| 子长县|