Gewusst wie: Identifizieren eines Typs, der NULL-Werte zulässt (C#-Programmierhandbuch)How to: Identify a Nullable Type (C# Programming Guide)

Sie können den C#-Operator typeof zum Erstellen eines Type-Objekts verwenden, der einen Nullable-Typ darstellt:You can use the C# typeof operator to create a Type object that represents a Nullable type:

System.Type type = typeof(int?);  

Sie können auch die Klassen und Methoden des System.Reflection-Namespace verwenden, um Type-Objekte zu generieren, die Nullable-Typen darstellen.You can also use the classes and methods of the System.Reflection namespace to generate Type objects that represent Nullable types. Wenn Sie jedoch versuchen, Typinformationen von Nullable-Variablen zur Laufzeit abzurufen, indem Sie die GetType-Methode oder den is-Operator verwenden, ist das Ergebnis ein Type-Objekt, das den zugrunde liegenden Typ und nicht den Nullable-Typ selbst darstellt.However, if you try to obtain type information from Nullable variables at runtime by using the GetType method or the is operator, the result is a Type object that represents the underlying type, not the Nullable type itself.

Das Aufrufen von GetType auf einem Nullable-Typ führt dazu, dass ein Boxing-Vorgang ausgeführt wird, wenn der Typ impliziert in Object konvertiert wird.Calling GetType on a Nullable type causes a boxing operation to be performed when the type is implicitly converted to Object. Aus diesem Grund gibt GetType immer ein Type-Objekt zurück, das den zugrunde liegenden Typ und nicht einen Nullable-Typ darstellt.Therefore GetType always returns a Type object that represents the underlying type, not the Nullable type.

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

Der C#-Operator is wird auch auf dem zugrunde liegenden Nullable-Typen betrieben.The C# is operator also operates on a Nullable's underlying type. Aus diesem Grund können Sie is nicht verwenden, um zu bestimmen, ob eine Variable ein Nullable-Typ ist.Therefore you cannot use is to determine whether a variable is a Nullable type. Das folgende Beispiel zeigt, dass der is-Operator eine Nullable-Variable <int> als „int“ behandelt.The following example shows that the is operator treats a Nullable<int> variable as an int.

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

BeispielExample

Verwenden Sie den folgenden Code, um zu bestimmen, ob ein Type-Objekt einen Nullable-Typ darstellt.Use the following code to determine whether a Type object represents a Nullable type. Denken Sie daran, dass dieser Code immer FALSE zurückgibt, wenn das Type-Objekt von einem Aufruf auf GetType zurückgegeben wurde, so wie zuvor in diesem Thema beschrieben wurde.Remember that this code always returns false if the Type object was returned from a call to GetType, as explained earlier in this topic.

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

Siehe auchSee Also

Typen mit NullwertNullable Types
Boxing von Typen mit NullwertenBoxing Nullable Types