Typen, die NULL-Werte zulassen (C#-Programmierhandbuch)

Aktualisiert: November 2007

Typen, die NULL-Werte zulassen, sind Instanzen der System.Nullable<T>-Struktur. Ein Typ, der NULL-Werte zulässt, kann für seinen zugrunde liegenden Werttyp den korrekten Wertebereich darstellen, darüber hinaus aber auch einen zusätzlichen null-Wert. Einem Typ Nullable<Int32>, gesprochen "Nullable of Int32", kann z. B. jeder Wert im Bereich von -2147483648 bis 2147483647 oder der null-Wert zugewiesen werden. Einem Nullable<bool>-Typ können die Werte true, false oder null zugewiesen werden. Die Möglichkeit, numerischen und booleschen Typen null-Werte zuzuweisen, ist besonders hilfreich beim Umgang mit Datenbanken und anderen Datentypen, die Elemente enthalten, denen unter Umständen kein Wert zugewiesen werden kann. Ein boolesches Feld in einer Datenbank kann z. B. die Werte true oder false speichern, oder es wird nicht definiert.

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 is set to zero
        int y = num.GetValueOrDefault();

        // num.Value throws an InvalidOperationException if num.HasValue is false
        try
        {
            y = num.Value;
        }
        catch (System.InvalidOperationException e)
        {
            System.Console.WriteLine(e.Message);
        }
    }
}

Im Beispiel wird die Ausgabe angezeigt:

num = Null

Nullable object must have a value.

Übersicht über Typen, die NULL-Werte zulassen

Typen, die NULL-Werte zulassen, weisen die folgenden Eigenschaften auf:

  • Typen, die NULL-Werte zulassen, stellen Werttypvariablen dar, denen der Wert null zugewiesen werden kann. Sie können keinen auf einem Referenztyp basierenden Typ erstellen, der NULL-Werte zulässt. (Referenztypen unterstützen bereits den null-Wert.)

  • Die Syntax T? ist die Kurzform für Nullable<T>, wobei T ein Werttyp ist. Diese beiden Formen sind austauschbar.

  • Die Zuweisung eines Werts zu einem Typ, der NULL-Werte zulässt, erfolgt auf die gleiche Art und Weise wie bei regulären Werttypen, z. B. int? x = 10; oder double? d = 4.108;.

  • Verwenden Sie die Nullable<T>.GetValueOrDefault-Methode, um den zugewiesenen Wert oder den Standardwert für den zugrunde liegenden Typ zurückzugeben, wenn der Wert null ist, z. B. int j = x.GetValueOrDefault();.

  • Verwenden Sie die schreibgeschützte HasValue-Eigenschaft und die schreibgeschützte Value-Eigenschaft, um auf NULL-Werte zu testen und den Wert abzurufen, z. B. if(x.HasValue) j = x.Value;.

    • Die HasValue-Eigenschaft gibt true zurück, wenn die Variable einen Wert enthält, oder false, wenn es sich um einen NULL-Wert handelt.

    • Die Value-Eigenschaft gibt einen Wert zurück, sofern ein Wert zugewiesen ist. Andernfalls wird eine System.InvalidOperationException ausgelöst.

    • Der Standardwert für die Variable eines Typs, der NULL-Werte zulässt, legt HasValue auf false fest. Der Value ist nicht definiert.

  • Verwenden Sie den Operator ?? zum Zuweisen eines Standardwerts, der angewendet wird, wenn ein Typ, der NULL-Werte zulässt und dessen aktueller Wert NULL ist, einem Typ zugewiesen wird, der keine NULL-Werte zulässt, z. B. int? x = null; int y = x ?? -1;.

  • Geschachtelte Typen, die NULL-Werte zulassen, sind nicht zulässig. Die folgende Zeile wird nicht kompiliert: Nullable<Nullable<int>> n;

Verwandte Abschnitte

Weitere Informationen:

C#-Programmiersprachenspezifikation

Weitere Informationen finden Sie im folgenden Abschnitt in der C#-Programmiersprachenspezifikation:

  • 4.1.10 Typen, die NULL-Werte zulassen

Siehe auch

Aufgaben

Beispiel, das NULL-Werte zulässt

Konzepte

C#-Programmierhandbuch

Referenz

Nullable

Weitere Ressourcen

Visual C#

C#-Referenz

Was genau bedeutet 'transformiert'?