共用方式為


HOW TO:識別可為 Null 的型別 (C# 程式設計手冊)

您可以使用 C# 的 typeof 運算子來建立表示可為 Null 的型別 (Nullable Type) 之 Type 物件。

System.Type type = typeof(int?);

您也可以使用 System.Reflection 命名空間的類別和方法來產生表示可為 Null 的型別之 Type 物件。 不過,如果您嘗試在執行階段使用 GetType 方法或 is 運算子,從可為 Null 的變數取得型別資訊,則結果會是表示基礎型別的 Type 物件,而不是可為 Null 的型別本身。

當可為 Null 的型別隱含轉換為 Object 時,在該型別上呼叫 GetType 會產生 boxing 作業。 因此,GetType 一定會傳回表示基礎型別的 Type 物件,而不是可為 Null 的型別。

  int? i = 5;
  Type t = i.GetType();
  Console.WriteLine(t.FullName); //"System.Int32"

C# 的 is 運算子也可以在可為 Null 的基礎型別上運作。 因此,您無法使用 is 來判斷某個變數是否是可為 Null 的型別。 下列範例示範 is 運算子如何將可為 Null 的 <int> 變數視為 int。

  static void Main(string[] args)
  {
    int? i = 5;
    if (i is int) // true
      //…
  }

範例

使用下列程式碼可判斷 Type 物件是否表示可為 Null 的型別。 請記得,如果 Type 物件是從 GetType 呼叫所傳回,這段程式碼一定會傳回 false,如本主題先前所述。

if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>)) {…}

請參閱

參考

可為 Null 的型別 (C# 程式設計手冊)

Box 處理可為 Null 的型別 (C# 程式設計手冊)