程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> CLR筆記:18.可空值類型

CLR筆記:18.可空值類型

編輯:關於.NET

前言:System.Nullable<T>在FCL中的實現:

System.Nullable<T>    where T:struct,所以Nullable<T>是一個值類型

有兩個只讀屬性HasValue和Value,以及GetValueOrDefault方法

18.1 

C#語法:Int32? 等價於 Nullable<Int32>,於是可以有:

    Int32? a = 5;

    Int32? b = null;

允許類型轉換:Int32 c = (Int32)a;

允許 可空基元類型之間的類型轉型:

        Double? d = 5;

        Double? e = b;

允許對可空類型實例使用操作符。

18.2

??,空接合操作符,用法Int32 c = a ?? b; 表示如果a不為null就返回a;否則返回b

18.3

對Nullable<T>裝箱,要麼返回null,要麼返回已經裝箱的T

對已經裝箱的T拆箱,或者為T,或者為Nullable<T>。對於後者,CLR要分配內存,以容納 Nullable<T>的hasValue和Value字段

一個Nullable<T>對象,GetType()返回的類型是T,而不是Nullable<T>

通過可空值類型調用接口方法:

Int32? n = 5;
Int32 result = ((IComparable)n).CompareTo(5);

這裡,n是Nullable<T>類型,Nullable<Int32>並未實現IComparable<Int32>,但 是C#中會先將隱式轉換為Int32,因為Int32實現了IComparable<Int32>接口,所以以上代碼可以編 譯。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved