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

首頁 > 編程 > C# > 正文

淺談C#2.0泛型中的變化:default關(guān)鍵字

2020-01-24 03:09:55
字體:
供稿:網(wǎng)友

今天回答別人問題的時候,才發(fā)現(xiàn)原先的T.default語法被取消了,使用了新的default關(guān)鍵字來實現(xiàn)這一功能。還好回復(fù)前動手試了一下,不然就...

下面詳細(xì)說明一下。之所以會用到default關(guān)鍵字,是因為需要在不知道類型參數(shù)為值類型還是引用類型的情況下,為對象實例賦初值。考慮以下代碼:

復(fù)制代碼 代碼如下:

class TestDefault<T>
    {
        public T foo()
        {
            T t = null; //???
            return t;
        }
    }

如果我們用int型來綁定泛型參數(shù),那么T就是int型,那么注釋的那一行就變成了 int t = null;顯然這是無意義的。為了解決這一問題,引入了default關(guān)鍵字:
復(fù)制代碼 代碼如下:

class TestDefault<T>
    {
        public T foo()
        {
                return default(T);
        }
    }

以下是測試用的代碼,看了之后就應(yīng)該很快能明白,default關(guān)鍵字的作用:
復(fù)制代碼 代碼如下:

 class Program
    {
        static void Main(string[] args)
        {
            TestDefault<int> t1 = new TestDefault<int>();
            int i = t1.foo();
            System.Diagnostics.Debug.Assert(i == 0);

            TestDefault<object> t2 = new TestDefault<object>();
            object o = t2.foo();
            System.Diagnostics.Debug.Assert(o == null);
        }
    }


最后說明一下,在.net 2.0的早期preview中,沒有default關(guān)鍵字,使用如下的方式實現(xiàn)default關(guān)鍵字的功能:
復(fù)制代碼 代碼如下:

class TestDefault<T>
    {
        public T foo()
        {
                return T.default;
        }
    }

這段代碼在vs 2005 beta1中,已經(jīng)不能通過編譯了。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 金溪县| 克东县| 清水县| 焦作市| 青铜峡市| 英山县| 乌兰县| 磐安县| 丽水市| 山阴县| 冕宁县| 抚远县| 鸡泽县| 河北区| 奈曼旗| 监利县| 驻马店市| 鄂尔多斯市| 海城市| 汾西县| 故城县| 托克逊县| 和林格尔县| 花垣县| 永吉县| 宽甸| 临清市| 青铜峡市| 祥云县| 武邑县| 桐乡市| 旬邑县| 康平县| 磐安县| 台州市| 怀柔区| 织金县| 沂南县| 图木舒克市| 黄龙县| 莱芜市|