隨筆-200  評論-148  文章-15  trackbacks-0

          在C# 2.0里面的數(shù)據(jù)類型中,分為值類型和引用類型,引用類型可以初始化為null,可是值類型是不可以的。

          比如經(jīng)常用到的System.Guid類型,要么賦值為Guid.NewId,要么賦值為Guid.Empty。
          再比如System.DateTime,默認初始化為DateTime.MinValue。

          強行給值類型賦null值,編譯就不會通過,會報出類似下面的異常:
          錯誤 1 無法將 NULL 轉換成“System.DateTime”,因為它是一種值類型
          這個時候就要借助Nullable<T>結構體了。

          拿DateTime舉例,完整的寫法:
          Nullable<DateTime> now = DateTime.Now;
          Nullable<DateTime> now = null;
          當然也可以縮寫:
          DateTime? now = DateTime.Now;
          DateTime? now = null;
          我們可以直接對now賦值,但實際上是給now.Value賦值。

          既然可以為空,就涉及到判斷了,以下兩種方式都是可行的:
          if (now != null) {}
          if (now.HasValue()) {}
          有一點需要注意的是,值類型可以通過這種方法變成引用類型,但是引用類型不可以喲。比如下面這段代碼:
          Nullable<string> test = "ddd";
          這段代碼編譯無法通過,會報出以下異常:
          錯誤 1 類型“string”必須是不可為空的值類型才能用作泛型類型或方法“System.Nullable<T>”中的參數(shù)“T”

          posted on 2010-09-30 09:27 無聲 閱讀(6378) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 安新县| 兴和县| 梁平县| 五台县| 西乡县| 江西省| 会理县| 襄城县| 环江| 元氏县| 利川市| 蒲江县| 洱源县| 青海省| 溧阳市| 武宁县| 鹰潭市| 淄博市| 巩义市| 上饶市| 平阳县| 新乐市| 尼玛县| 分宜县| 延吉市| 冀州市| 大同县| 炉霍县| 荥阳市| 开原市| 揭西县| 朔州市| 凤凰县| 凤山市| 嘉鱼县| 贵港市| 儋州市| 杂多县| 离岛区| 巴里| 海门市|