C 中的可空資料型別

2021-06-07 22:34:29 字數 1917 閱讀 5099

先來看一段**:

null值用來表示資料型別未被賦予任何值,它是一種引用型別且它只能賦值給引用型別,由於string是乙個特殊的引用型別,因此編譯器不會報錯。

但是當它賦值給值型別int型別的時候,編譯器就會報錯:

我們知道資料庫中是有null值的,例如下面的一張表,年齡(int型別)是可以為空的,代表目前不知道此人年齡,那麼當我們在c#**向資料庫插入資料時,就會需要乙個可空的int型別。

但是int、bool等這些型別不能表示資料庫中的「null」 。因此c#提供了「可空型別」這種語法,只要在型別後加?就構成了可空的資料型別,比如int?、bool?,這樣

int? i=null 就可以了。解決資料庫中int可以為null,而c#中int不能為null的問題。

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace 可空資料型別}}

由於i為空,所以不會有任何資料顯示。

t?其實是system.nullable的簡寫,可空型別在ado.net程式設計中大量使用,用來解決資料庫與c#**資料型別不一致的問題。

來看一下msdn文件中關於system.nullable的說明:

system.nullable的定義:

由它的定義可知:判斷可空型別是否為空,用i==null或者i.hasvalue;得到可空變數的值,int i1=(int)i.value或者int i1=i.value。

型別轉換:不可空型別賦值給可空型別無需顯式轉換(一定成功),可空型別賦值給不可空型別則需顯式轉換(不一定成功)

如果int? i3 = null;

如果int? i3 = 8;

C 可空資料型別

資料庫中的數字和程式語言中的數字有顯著不同的特徵,因為資料庫中的數字可以為空,c 中的數字不能為空。int32是乙個結構,而結構是值型別的,所以它不能為空。在c 中可以使用nullable結構很容易解決這個問題。定義可空型別 1 nullablex 2 int?x2 可以檢查nullable的has...

C 中可空型別

c 提供了乙個特殊的資料型別,nullable 型別 可空型別 可空型別可以表示其基礎值型別正常範圍內的值,再加上乙個 null 值。例如,nullable int32 讀作 可空的 int32 可以被賦值為 2,147,483,648 到 2,147,483,647 之間的任意值,也可以被賦值為 ...

C 可空型別

可空型別只能用於值型別,不能用於引用型別,引用型別本身支援null值。如果直接把null賦值給int型別,會出現乙個錯誤 無法將 null 轉換成 int 因為它是一種值型別 賦值時應該使用 int?a null 可空型別與一元或二元運算子一起使用是,如果乙個運算元或兩個運算元都是null,其結果為...