Nullable-Typen (C#-Programmierhandbuch)Nullable types (C# Programming Guide)

Auf NULL festlegbare Typen sind Instanzen der System.Nullable<T>-Struktur.Nullable types are instances of the System.Nullable<T> struct. Nullable-Typen können alle Werte eines zugrunde liegenden T-Typs und einen zusätzlichen NULL-Wert darstellen.Nullable types can represent all the values of an underlying type T, and an additional null value. Der zugrunde liegende Typ T kann jeder Werttyp sein, der keine NULL-Werte zulässt.The underlying type T can be any non-nullable value type. T kann kein Referenztyp sein.T cannot be a reference type.

Sie können beispielsweise null oder jeden anderen Integerwert von Int32.MinValue bis Int32.MaxValue einem Nullable<int>-, TRUE- und FALSE-Wert zuweisen, oder null zu Nullable<bool>.For example, you can assign null or any integer value from Int32.MinValue to Int32.MaxValue to a Nullable<int> and true, false, or null to a Nullable<bool>.

Sie verwenden einen Nullable-Typ, wenn Sie den nicht definierten Wert eines zugrunde liegenden Typs darstellen müssen.You use a nullable type when you need to represent the undefined value of an underlying type. Eine boolesche Variable darf nur zwei Werte besitzen: TRUE und FALSE.A Boolean variable can have only two values: true and false. Es gibt keinen „nicht definierten“ Wert.There is no "undefined" value. In den meisten Programmierungsanwendungen – allen voran Datenbankinteraktionen – kann ein Variablenwert in einem nicht definierten Zustand vorkommen oder fehlen.In many programming applications, most notably database interactions, a variable value can be undefined or missing. Ein Feld in einer Datenbank kann z.B. die Werte TRUE und FALSE enthalten; ebenso kann es aber auch gar keinen Wert enthalten.For example, a field in a database may contain the values true or false, or it may contain no value at all. In diesem Fall verwenden Sie einen Nullable<bool>-Typ.You use a Nullable<bool> type in that case.

Nullable-Typen weisen die folgenden Eigenschaften auf:Nullable types have the following characteristics:

  • Nullable-Typen stellen Werttypvariablen dar, denen der Wert null zugewiesen werden kann.Nullable types represent value-type variables that can be assigned the null value. Sie können keinen Nullable-Typ basierend auf einem Verweistyp erstellen.You cannot create a nullable type based on a reference type. (Verweistypen unterstützen immer den null-Wert.)(Reference types already support the null value.)

  • Die Syntax T? ist eine Kurzform für Nullable<T>.The syntax T? is shorthand for Nullable<T>. Die beiden Formen sind austauschbar.The two forms are interchangeable.

  • Sie weisen einem Nullable-Typ einen Wert genauso zu, wie Sie es für einen zugrunde liegenden Werttyp tun würden: int? x = 10; oder double? d = 4.108;.Assign a value to a nullable type just as you would for an underlying value type: int? x = 10; or double? d = 4.108;. Sie können ebenfalls den null-Wert zuweisen: int? x = null;.You also can assign the null value: int? x = null;.

  • Verwenden Sie die schreibgeschützten Eigenschaften Nullable<T>.HasValue und Nullable<T>.Value, um auf NULL zu prüfen und den Wert abzurufen, wie im folgenden Beispiel gezeigt: if (x.HasValue) y = x.Value;Use the Nullable<T>.HasValue and Nullable<T>.Value readonly properties to test for null and retrieve the value, as shown in the following example: if (x.HasValue) y = x.Value;

    • Die Eigenschaft HasValue gibt true zurück, wenn die Variable einen Wert enthält, oder sie gibt false zurück, wenn die Variable null ist.The HasValue property returns true if the variable contains a value, or false if it's null.

    • Die Eigenschaft Value gibt einen Wert zurück, sofern HasValue true zurückgibt.The Value property returns a value if HasValue returns true. Andernfalls wird eine InvalidOperationException ausgelöst.Otherwise, an InvalidOperationException is thrown.

  • Sie können wie im folgenden Beispiel dargestellt auch die Operatoren == und != mit einem Nullable-Typ verwenden: if (x != null) y = x.Value;You can also use the == and != operators with a nullable type, as shown in the following example: if (x != null) y = x.Value;. Wenn a und b jeweils NULL sind, ergibt a == b true.If a and b are both null, a == b evaluates to true.

  • Ab C# 7.0 können Sie den Musterabgleich verwenden, um einen Wert eines Nullable-Typs gleichzeitig zu untersuchen und abzurufen: if (x is int xValue) y = xValue;.Beginning with C# 7.0, you can use pattern matching to both examine and get a value of a nullable type: if (x is int xValue) y = xValue;.

  • Der Standardwert von T? ist eine Instanz, deren HasValue-Eigenschaft false zurückgibt.The default value of T? is an instance whose HasValue property returns false.

  • Verwenden Sie die GetValueOrDefault()-Methode, um entweder den zugewiesenen Wert oder den Standardwert für den zugrunde liegenden Werttyp zurückzugeben, wenn der Wert des Nullable-Typs null ist.Use the GetValueOrDefault() method to return either the assigned value, or the default value of the underlying value type if the value of the nullable type is null.

  • Verwenden Sie die GetValueOrDefault(T)-Methode, um entweder den zugewiesenen Wert oder den bereitgestellten Standardwert zurückzugeben, wenn der Wert des Nullable-Typs null ist.Use the GetValueOrDefault(T) method to return either the assigned value, or the provided default value if the value of the nullable type is null.

  • Verwenden Sie den NULL-Sammeloperator, ??, um einen Wert einem zugrunde liegenden Typ auf Grundlage eines Werts des Nullable-Typs zuzuweisen: int? x = null; int y = x ?? -1;Use the null-coalescing operator, ??, to assign a value to an underlying type based on a value of the nullable type: int? x = null; int y = x ?? -1;. Da x NULL ist, ist in diesem Beispiel der Ergebniswert von y -1.In the example, since x is null, the result value of y is -1.

  • Wenn eine benutzerdefinierte Konvertierung zwischen zwei Datentypen definiert ist, kann die gleiche Konvertierung auch mit der Version dieser Datentypen verwendet werden, die NULL-Werte zulassen.If a user-defined conversion is defined between two data types, the same conversion can also be used with the nullable versions of these data types.

  • Geschachtelte Nullable-Typen sind nicht zulässig.Nested nullable types are not allowed. Die folgende Zeile wird nicht kompiliert: Nullable<Nullable<int>> n;The following line doesn't compile: Nullable<Nullable<int>> n;

Weitere Informationen finden Sie unter Verwenden von auf NULL festlegbaren Typen und Vorgehensweise: Identifizieren eines Typs, der NULL-Werte zulässt.For more information, see the Using nullable types and How to: Identify a nullable type topics.

Siehe auchSee also

System.Nullable<T>
System.Nullable
?? Operator?? Operator
C#-ProgrammierhandbuchC# Programming Guide
Leitfaden für C#C# Guide
C#-ReferenzC# Reference
Auf NULL festlegbare Werttypen (Visual Basic)Nullable Value Types (Visual Basic)