欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2013年09月05日 09:59:39   作者:  
下面就詳細(xì)的說明一下。之所以會用到default關(guān)鍵字,是因為需要在不知道類型參數(shù)為值類型還是引用類型的情況下,為對象實例賦初值

今天回答別人問題的時候,才發(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)不能通過編譯了。

相關(guān)文章

  • C#集合之并發(fā)集合的用法

    C#集合之并發(fā)集合的用法

    這篇文章介紹了C#集合之并發(fā)集合的用法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • C#圖像處理之圖像平移的方法

    C#圖像處理之圖像平移的方法

    這篇文章主要介紹了C#圖像處理之圖像平移的方法,涉及C#操作圖形實現(xiàn)平移的相關(guān)技巧,需要的朋友可以參考下
    2015-04-04
  • C#3.0使用EventLog類寫Windows事件日志的方法

    C#3.0使用EventLog類寫Windows事件日志的方法

    這篇文章主要介紹了C#3.0使用EventLog類寫Windows事件日志的方法,以簡單實例形式分析了C#寫windows事件日志的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-08-08
  • C#判斷語句的表達(dá)式樹實現(xiàn)

    C#判斷語句的表達(dá)式樹實現(xiàn)

    這篇文章介紹了C#判斷語句的表達(dá)式樹實現(xiàn),文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-01-01
  • 淺析C#?AsyncLocal如何實現(xiàn)Thread間傳值

    淺析C#?AsyncLocal如何實現(xiàn)Thread間傳值

    這篇文章主要是來和大家一起討論一下C#?AsyncLocal如何實現(xiàn)Thread間傳值,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01
  • C#中volatile與lock用法

    C#中volatile與lock用法

    這篇文章主要介紹了C#中volatile與lock用法,較為詳細(xì)的分析了C#中volatile與lock的適用情況及用法實例,具有一定的參考借鑒價值,需要的朋友可以參考下
    2014-10-10
  • C#禁用雙擊窗體圖標(biāo)關(guān)閉窗體的方法

    C#禁用雙擊窗體圖標(biāo)關(guān)閉窗體的方法

    這篇文章主要介紹了C#禁用雙擊窗體圖標(biāo)關(guān)閉窗體的方法,通過對窗體參數(shù)的簡單設(shè)置實現(xiàn)C#禁用雙擊窗體圖標(biāo)關(guān)閉窗體的功能,非常簡單實用,需要的朋友可以參考下
    2015-08-08
  • C#操作SQLite數(shù)據(jù)庫方法小結(jié)(創(chuàng)建,連接,插入,查詢,刪除等)

    C#操作SQLite數(shù)據(jù)庫方法小結(jié)(創(chuàng)建,連接,插入,查詢,刪除等)

    這篇文章主要介紹了C#操作SQLite數(shù)據(jù)庫方法,包括針對SQLite數(shù)據(jù)庫的創(chuàng)建,連接,插入,查詢,刪除等操作,并提供了一個SQLite的封裝類,需要的朋友可以參考下
    2016-07-07
  • C#調(diào)用FFplay實現(xiàn)播放視頻功能

    C#調(diào)用FFplay實現(xiàn)播放視頻功能

    這篇文章主要為大家詳細(xì)介紹了C#如何調(diào)用FFplay實現(xiàn)播放視頻功能,文中的示例代碼講解詳細(xì),具有一定的參考價值,有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-10-10
  • C#?Math中常用數(shù)學(xué)運算的示例詳解

    C#?Math中常用數(shù)學(xué)運算的示例詳解

    Math?為通用數(shù)學(xué)函數(shù)、對數(shù)函數(shù)、三角函數(shù)等提供常數(shù)和靜態(tài)方法,使用起來非常方便。這篇文章主要為大家介紹幾個常用的數(shù)學(xué)運算的使用,需要的可以參考一下
    2022-11-11

最新評論