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

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

          比如經常用到的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>”中的參數“T”

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

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


          網站導航:
           
          主站蜘蛛池模板: 达孜县| 浦北县| 景德镇市| 陕西省| 安多县| 额尔古纳市| 佛坪县| 邳州市| 西平县| 耒阳市| 清涧县| 涿鹿县| 营口市| 厦门市| 周宁县| 凤城市| 辽阳市| 福海县| 改则县| 南召县| 双鸭山市| 同江市| 丘北县| 宿迁市| 马公市| 阳新县| 灵武市| 广水市| 军事| 武宁县| 苍溪县| 鸡泽县| 揭西县| 襄垣县| 汝州市| 平江县| 长沙市| 石门县| 昭平县| 弥勒县| 高碑店市|