位置:首頁 > 軟件操作教程 > 編程開發(fā) > C# > 問題詳情

C# 可空類型

提問人:劉團圓發(fā)布時間:2020-12-07

    值類型(大多數(shù)基本類型,例如,int、double和所有結(jié)構(gòu))區(qū)別于引用類型(string和任意類)的一種方式:值類型必須包含一個值,它們可以在聲明之后、賦值之前,在未賦值的狀態(tài)下存在,但不能使用未賦值的變量。而引用類型可以是mill。

    有時讓值類型為空是很有用的(尤其是處理數(shù)據(jù)庫時),泛型使用System.Nullable<T>類型提供了使值類型為空的一種方式。例如:

    System.Nullable<int> nullablelnt;

這行代碼聲明了一個變量nullablelnt,它可以擁有int變量能包含的任意值,還可以擁有值null。所以可以編寫如下的代碼:

    nullablelnt = null;

如果nullablelnt是一個int類型的變量,上面的代碼是不能編譯的。

前面的賦值等價于:

    nullablelnt = new System.Nullable<int>();

與其他任意變量一樣,無論是初始化為null(使用上面的語法),還是通過給它賦值來初始化,都不能在初始化之前使用它。

可以像測試引用類型一樣測試可空類型,看看它們是否為null:

if (nullablelnt == null)

{

    ...

}

另外,可使用HasValue屬性:

if (nullablelnt.HasValue)

{

    ...

}

    這不適用于引用類型,即使引用類型有一個HasValue屬性,也不能使用這種方法,因為引用類型的變量值為null就表示不存在對象,當然就不能通過對象來訪問這個屬性,否則會拋出一個異常。

    可使用Value屬性來查看可空類型的值。如果HasValue是true,就說明Value屬性有一個非空值。但如果 HasValue是felse,就說明變量被賦予了null,訪問Value屬性會拋出System. InvalidOperationException類型的異常。

可空類型非常有用,以至于它們修改了C#語法。聲明可空類型的變量不使用上述語法,而是使用下面的語法:

    int? nullablelnt;

其中int ?是System.Nullable<int>的縮寫,但更便于讀取。

繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(0)
返回頂部