可空類型是System.Nullable結(jié)構(gòu)體的實列。一個可空類型代表了相應(yīng)值類型的正確范圍附加null值。例如Nullable<Int32>的取值范圍應(yīng)該是-2147483648到2147483647外加null。Null<bool>的取值為true,false和null。這種方法一般在處理數(shù)據(jù)庫的時候用到,因為數(shù)據(jù)庫里面可能含有沒有賦值的值類型。
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將會被設(shè)置“0”。
int y = num.GetValueOrDefault();
// 如果num.HasValue為空,那么num.Value將會拋出InvalidOperationException異常。
try
{
y = num.Value;
}
catch (System.InvalidOperationException e)
{
System.Console.WriteLine(e.Message);
}
}
}
輸出的結(jié)果:
num = Null
Nullable object must have a value.
可空類型具有如下的屬性:
·可空類型只能應(yīng)用于值類型,引用類型因為已經(jīng)支持了null而不能被使用。
·T?是System.Nullable<T>的縮寫,這里T是一個值類型。這兩種格式是可以互換的。
·可以像使用普通類型一樣使用可空類型。例如int? x = 10;或者double? d = 40108;
·使用System.Nullable.GetValueOrDefault還獲得值,或者當(dāng)它為空的時候獲得默認(rèn)值。
·使用HaseValue和Value只讀屬性來測試它是不是空并且返回相應(yīng)的非空值。
·如果含有值那么HaseValue返回真,否則返回假。
·如果含有值那么Value返回值,否則拋出System.InvalidOperationException異常。
·HaseValue默認(rèn)值為假,Value默認(rèn)為未定義。
·當(dāng)向值類型獲得可空類型的值得時候,使用??運算符來賦予一個可空類型一個默認(rèn)值。例如:int? x = null; int y = x ?? -1;
·不可以嵌套可空類型。Nullable<Nullabel<int>> n;將會拋出異常。
|
新聞熱點
疑難解答