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

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

關于泛型類和擴展方法的一點思考

2019-11-17 02:25:41
字體:
來源:轉載
供稿:網友

關于泛型類和擴展方法的一點思考

我們經常通過泛型構造函數創建泛型實例,也常調用實例的擴展方法。以下的代碼在項目中隨處可見:

        static void Main(string[] args)
        {
            var strs = new List<string> {"hello","world"};
            var result = strs.Where(s => s.StartsWith("h"));
            foreach (var item in result)
            {
                Console.WriteLine(item);
            }
            Console.ReadKey();
        }

以上,

● 通過泛型集合List<T>的構造函數創建了實例,內部是如何實現的呢?

● 對實例變量strs采用Where方法,我們發現Where也足夠”聰明”,因為它是針對IEnumerable集合類型的擴展方法。

.NET內部到底是如何實現的呢?不妨臨摹一下~~

創建一個類型泛型。

    public class MyCute<T>
    {
        public MyCute(T t)
        {
            GetCute = t;
        }
        public T GetCute { get; set; }
    }    

在客戶端這樣調用:

        static void Main(string[] args)
        {
            var cuteInt = new MyCute<int>(10);
            var cuteStr = new MyCute<string>("hello");
            Console.WriteLine(cuteInt.GetCute);
            Console.WriteLine(cuteStr.GetCute);
            Console.ReadKey();
        }

以上,或許得到的啟示是:如果想通過構造函數創建泛型實例,需要定義一個泛型類,一個泛型類型的屬性,一個把泛型類型作為參數的構造方法。

現在想對泛型實例cuteInt和cuteStr的屬性GetCute使用擴展方法,如何做呢?

cuteInt的屬性GetCute是int類型,cuteStr的屬性GetCute是string類型,兩者的共同基類是object,那就針對object類型寫一個擴展方法。

    public static class MyHelper
    {
        public static string GetStr(this object obj)
        {
            return obj.ToString() + "--added string";
        }
    }

客戶端變成這樣:

        static void Main(string[] args)
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 禄劝| 东光县| 陆丰市| 林州市| 科技| 察隅县| 卓尼县| 清流县| 老河口市| 马山县| 东丰县| 棋牌| 云阳县| 呼玛县| 万山特区| 泰州市| 景洪市| 上犹县| 航空| 怀安县| 类乌齐县| 乳源| 武夷山市| 西宁市| 长治市| 奉化市| 全椒县| 醴陵市| 淮北市| 垦利县| 密山市| 大宁县| 芷江| 盘锦市| 贡觉县| 海安县| 咸丰县| 霞浦县| 尚志市| 廊坊市| 定边县|