C# 可空類(lèi)型分析
更新時(shí)間:2008年12月09日 15:43:43 作者:
可空類(lèi)型是 System.Nullable 結(jié)構(gòu)的實(shí)例??煽疹?lèi)型可以表示其基礎(chǔ)值類(lèi)型正常范圍內(nèi)的值,再加上一個(gè) null 值。
例如,Nullable<Int32>,讀作“可空的 Int32”,可以被賦值為 -2147483648 到 2147483647 之間的任意值,也可以被賦值為 null 值。Nullable<bool> 可以被賦值為 true 或 false,或 null。在處理數(shù)據(jù)庫(kù)和其他包含可能未賦值的元素的數(shù)據(jù)類(lèi)型時(shí),將 null 賦值給數(shù)值類(lèi)型或布爾型的功能特別有用。例如,數(shù)據(jù)庫(kù)中的布爾型字段可以存儲(chǔ)值 true 或 false,或者,該字段也可以未定義。
可空類(lèi)型具有以下特性:
·可空類(lèi)型表示可被賦值為 null 值的值類(lèi)型變量。無(wú)法創(chuàng)建基于引用類(lèi)型的可空類(lèi)型。(引用類(lèi)型已支持 null 值。)。
·語(yǔ)法 T? 是 System.Nullable<T> 的簡(jiǎn)寫(xiě),此處的 T 為值類(lèi)型。這兩種形式可以互換。
·為可空類(lèi)型賦值與為一般值類(lèi)型賦值的方法相同,如 int? x = 10; 或 double? d = 4.108;。
·如果基礎(chǔ)類(lèi)型的值為 null,請(qǐng)使用 System.Nullable.GetValueOrDefault 屬性返回該基礎(chǔ)類(lèi)型所賦的值或默認(rèn)值,例如 int j = x.GetValueOrDefault();
·請(qǐng)使用 HasValue 和 Value 只讀屬性測(cè)試是否為空和檢索值,例如 if(x.HasValue) j = x.Value;
如果此變量包含值,則 HasValue 屬性返回 True;或者,如果此變量的值為空,則返回 False。
如果已賦值,則 Value 屬性返回該值,否則將引發(fā) System.InvalidOperationException。
可空類(lèi)型變量的默認(rèn)值將 HasValue 設(shè)置為 false。未定義 Value。
·使用 ?? 運(yùn)算符分配默認(rèn)值,當(dāng)前值為空的可空類(lèi)型被賦值給非空類(lèi)型時(shí)將應(yīng)用該默認(rèn)值,如 int? x = null; int y = x ?? -1;。
·不允許使用嵌套的可空類(lèi)型。將不編譯下面一行:Nullable<Nullable<int>> n;
程序代碼 程序代碼
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);
}
}
}
以上將顯示輸出:
num = Null
Nullable object must have a value.
可空類(lèi)型具有以下特性:
·可空類(lèi)型表示可被賦值為 null 值的值類(lèi)型變量。無(wú)法創(chuàng)建基于引用類(lèi)型的可空類(lèi)型。(引用類(lèi)型已支持 null 值。)。
·語(yǔ)法 T? 是 System.Nullable<T> 的簡(jiǎn)寫(xiě),此處的 T 為值類(lèi)型。這兩種形式可以互換。
·為可空類(lèi)型賦值與為一般值類(lèi)型賦值的方法相同,如 int? x = 10; 或 double? d = 4.108;。
·如果基礎(chǔ)類(lèi)型的值為 null,請(qǐng)使用 System.Nullable.GetValueOrDefault 屬性返回該基礎(chǔ)類(lèi)型所賦的值或默認(rèn)值,例如 int j = x.GetValueOrDefault();
·請(qǐng)使用 HasValue 和 Value 只讀屬性測(cè)試是否為空和檢索值,例如 if(x.HasValue) j = x.Value;
如果此變量包含值,則 HasValue 屬性返回 True;或者,如果此變量的值為空,則返回 False。
如果已賦值,則 Value 屬性返回該值,否則將引發(fā) System.InvalidOperationException。
可空類(lèi)型變量的默認(rèn)值將 HasValue 設(shè)置為 false。未定義 Value。
·使用 ?? 運(yùn)算符分配默認(rèn)值,當(dāng)前值為空的可空類(lèi)型被賦值給非空類(lèi)型時(shí)將應(yīng)用該默認(rèn)值,如 int? x = null; int y = x ?? -1;。
·不允許使用嵌套的可空類(lèi)型。將不編譯下面一行:Nullable<Nullable<int>> n;
程序代碼 程序代碼
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);
}
}
}
以上將顯示輸出:
num = Null
Nullable object must have a value.
相關(guān)文章
.Net之微信小程序獲取用戶(hù)UnionID的實(shí)現(xiàn)
這篇文章主要介紹了.Net之微信小程序獲取用戶(hù)UnionID的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
AspNet Core上實(shí)現(xiàn)web定時(shí)任務(wù)實(shí)例
在本篇文章里小編給大家分享了關(guān)于AspNet Core上實(shí)現(xiàn)web定時(shí)任務(wù)的實(shí)例內(nèi)容,有興趣的朋友們學(xué)習(xí)參考下。2019-02-02
Asp.net中DataTable導(dǎo)出到Excel的方法介紹
本篇文章介紹了,Asp.net中DataTable導(dǎo)出到Excel的方法。需要的朋友參考下2013-05-05
ASP.NET web.config中 數(shù)據(jù)庫(kù)連接字符串加密解密
本文主要介紹利用aspnet_regiis.exe工具對(duì)web.config中connectionStrings節(jié)點(diǎn)進(jìn)行加密和解密的過(guò)程,希望對(duì)大家有所幫助。2016-05-05
在ASP.Net?Core應(yīng)用程序中使用Bootstrap4
這篇文章介紹了在ASP.Net?Core應(yīng)用程序中使用Bootstrap4的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-01-01
Ext.Net學(xué)習(xí)筆記之button小結(jié)
Ext.Net學(xué)習(xí)筆記之button小結(jié),需要的朋友可以參考一下2013-02-02

