C 中可以為null的型別

2021-08-22 10:06:34 字數 1521 閱讀 2080

一、含義:

可以為null的型別,表示為該值在該型別範圍中,還可以取null值。

比如:int值是-2,147,483,648 到 2,147,483,647 ,預設值是 0,不包含null值,但是int? a=null;就包含null值。

二、宣告格式:

可以通過如下兩種方式申明可為空的型別:

system.nullablevariable;

t?variable;

t是可以為 null 的型別的基礎型別。t可以是包括struct在內的任意值型別;它不能是引用型別,引用型別已經支援為null。引用型別可以設定為空,表示它未初始化。

三、特徵:

可以為 null 的型別表示可以向其賦值null的值型別變數。 

語法t?是 nullable 的簡寫,其中t是值型別。 這兩種形式是可互換的。

向可以為 null 的型別賦值的方法與向一般值型別賦值的方法相同,如int? x = 10;double? d = 4.108;也能夠向可以為 null 的型別賦值nullint? x = null;

使用 nullable.getvalueordefault 方法可返回分配的值或基礎型別的預設值(如果值為null的話)。例如,int j = x.getvalueordefault();

使用 hasvalue 和 value 唯讀屬性可測試是否存在 null 值並檢索值,如以下示例所示:if(x.hasvalue) j = x.value;

如果變數包含值,則hasvalue屬性返回true;如果值為null,則返回false

如果已賦值,則value屬性返回值。 否則,將會引發 system.invalidoperationexception。

hasvalue的預設值為falsevalue屬性沒有預設值。

還能將==!=運算子與可以為 null 的型別結合使用,如以下示例所示:if (x != null) y = x;

將當前值為null的可為 null 的型別賦值給不可為 null 的型別時,可以使用??運算子賦予預設值,例如int? x = null; int y = x ?? -1;

不得巢狀可以為 null 的型別。 無法編譯下面的一行**:nullable> n;

注:參考

可以為空的型別

來自 http msdn.microsoft.com zh cn library aa479317.aspx 可以為空的型別 可以為空的型別實際上就是由於其他原因而非上述原因而使用的泛型。處理資料庫時面臨的挑戰之一就是正確一致地處理支援null的列。在處理字串和其他類 稱為引用型別 時,您只需為 中...

js中的null型別

null型別是第二個只有乙個值的型別,這個的特殊值是null,從邏輯角度看,null值表示乙個空物件指標,而這也正是typeof 檢測null值時會返回object的原因 var car null alert typeof car 彈出object 如果定義的變數將來用於儲存物件,那麼最好將該變數初...

C 可為null的型別

文章參考 對於資料值型的型別,以及結構型別,是不能夠賦null值的 但是在型別後面加個?或者 system nullable t 用這種方式就可以宣告這個變數是可以為null的 可以為 null 的型別是 system.nullable 結構的例項。可以為 null 的型別可以表示其基礎值型別正常範...