2012-11-05 102 views
14

當我們必須使用爲空時鍵入C#.net?有沒有人可以用例子來解釋。什麼是C#中的可空類型?

+4

http://msdn.microsoft.com/en-us/library/1t3y8s4s(v=vs.80).aspx –

+0

http://www.c-sharpcorner.com/UploadFile/PashuSX/NullableTypes04282006114548AM/NullableTypes。 ASPX –

回答

0

可爲空的類型是C#2.0中引入的新概念,它允許用戶爲C#語言的原始數據類型賦予空值。這裏不重要的是Nullable type是結構類型。

志文章:Nullable type -- Why we need Nullable types in programming language ?

+0

有些不太準確,我會說'可空'是一個包裝類型,它允許空值(或「可選」)的值類型語義。這不僅僅適用於primative,並且將null分配給可爲null的類型實際上是語法糖。在參考意義上,'null''Nullable '並不是真的'null'。 –

+1

請在將您的語法鏈接到SO之前修正您的語法。如果沒有人因爲語法差而理解你的解釋,那有什麼意義? – ragingasiancoder

1

從:http://msdn.microsoft.com/en-us/library/1t3y8s4s(v=vs.80).aspx 空類型是System.Nullable結構的實例。可爲空的類型可以表示其基礎值類型的正常值範圍,以及一個附加的空值。例如,發音爲「可爲空的Int32的可空」Int32 >可以從-2147483648到2147483647被賦予任何值,或者可以賦予它空值。可爲空<布爾>可以被分配值真或假,或空

class NullableExample 
{ 
    static void Main() 
    { 
     int? num = null; 
     if (num.HasValue == true) 
     { 
      System.Console.WriteLine("num = " + num.Value); 
     } 
     else 
     { 
      System.Console.WriteLine("num = Null"); 
     } 

     //y is set to zero 
     int y = num.GetValueOrDefault(); 

     // num.Value throws an InvalidOperationException if num.HasValue is false 
     try 
     { 
      y = num.Value; 
     } 
     catch (System.InvalidOperationException e) 
     { 
      System.Console.WriteLine(e.Message); 
     } 
    } 
} 
29

空類型(When to use nullable types)是可以採取null作爲值的值類型。它的默認值是null,這意味着你沒有給它賦值。值類型的例子是整數,浮點,雙,日期時間等,這些類型的具有這些默認值

int x = 0; 
DateTime d = DateTime.MinValue; 
float y = 0; 

對於可爲空的替代,任何上述的defualt爲null

int? x = null; //no value 
DateTime? d = null; //no value 

這使得它們行爲像參考類型,例如對象,字符串

string s = null; 
object o = null; 

他們用值從數據庫中,當值從表中返回打交道時是非常有用的是NULL。想象一下,數據庫表中的整數值可能爲NULL,如果c#變量不可爲空,則只能用0來表示 - 常規整數。

另外,想象一下EndDate列,其值在將來的實際時間之前不會被確定。這可以被設置爲NULL在數據庫中,但你需要一個可空類型來存儲,在C#

DateTime StartDate = DateTime.Today; 
DateTime EndDate? = null; //we don't know yet 
2

當我們要使用C#.net可空類型?

想象一下,有一個整數變量id表示一個特定的id

可以存儲144,或任何else.But你不知道,如果不能id.You只是存儲-10。你可能會想分配null但通常null不能分配值類型。

int id=null;//error 

Nullable type使您能夠做到這一點。


值類型等int,double,char..不能被表示爲NULL值。

要值類型表示null必須使用nullable type ..

它被表示爲一個值類型接着?

int? id=null;

其transalted到

Nullable<int> id=new Nullable<int>();

默認它的可空類型的值是null

0

假設在你有一個要求,抓住客戶的出生日期,這不是一個強制性的領域中的應用。您可以在Customer類中將DateOfBirth屬性聲明爲System.DateTime類型。因爲DateTime是一個值類型,它不能接受空值,所以它會有一些默認值。

所以當客戶沒有填寫在出生日期控制的明確值,則需要將其保存在DB考慮默認爲NULL之前做一些邏輯。在DB中,您可以將NULL保存到DateTime字段。

爲了避免這些不必要的步驟來解釋UI和DA層的值,可以在C#中使用可空類型,這將使​​得代碼更易讀。

要了解關於可空類型的更多信息,請參閱Nullable types in C# with an example