新發現的「奇怪」的數據類型

一直以來,對於某些數據,如DateTime、int等,不支持爲其賦值爲null,但若是數據庫中爲null,咱們就須要用一些特殊手段來處理,如賦值爲MinValue等,而後判斷若是值爲MinValue時,就寫入數據庫爲null。
  也有不少人開始使用網絡上下載的Jssor等系列數據類型,它能很好的解決數據類型方面致使的問題,但一些經常使用的三方控件,如DevExpress並不支持自定義的數據類型,這就給使用Jssor等系列數據類型形成了不小的障礙。
  可是今天,我卻發現能夠定義如DateTime?、int?等形式的數據類型,而後用HasValue屬性來判斷是否爲null,用Value屬性來訪問值。
  以下面的代碼:
    1  using System;
    2  using System.Collections.Generic;
    3  using System.Text;
    4 
    5  namespace ConsoleApplication1
    6 {
    7     class Program
    8     {
    9         static void Main( string[] args)
   10         {
   11             // DateTime?
   12             DateTime? datetime1 = new DateTime();
   13 
   14             datetime1 = null;
   15             Console.Write(datetime1 + "\n");
   16             Console.Write(datetime1.HasValue + "\n");
   17             try
   18             {
   19                 Console.Write(datetime1.Value + "\n");
   20             }
   21             catch
   22             {
   23                 Console.Write( "Error!" + "\n");
   24             }
   25             if (datetime1 == null) Console.Write( "Ok 1!" + "\n");
   26             if (datetime1.HasValue == false) Console.Write( "Ok 2!" + "\n");
   27 
   28             datetime1 = DateTime.Now;
   29             Console.Write(datetime1 + "\n");
   30             Console.Write(datetime1.HasValue + "\n");
   31             try
   32             {
   33                 Console.Write(datetime1.Value + "\n");
   34             }
   35             catch
   36             {
   37                 Console.Write( "Error!" + "\n");
   38             }
   39             if (datetime1 != null) Console.Write( "Ok 3!" + "\n");
   40             if (datetime1.HasValue == true) Console.Write( "Ok 4!" + "\n");
   41 
   42             // DateTime
   43             DateTime datetime2 = new DateTime();
   44             datetime2 = null// Error
   45 
   46             Console.ReadLine();
   47         }
   48     }
   49 }


  註釋掉標記爲Error的代碼後,運行結果以下圖:
  有了這些奇怪的數據類型後,咱們之後設計數據庫的時候就不會爲這些爲null的值發愁了:)
相關文章
相關標籤/搜索