Nullable-Typen (C#-Programmierhandbuch)

Auf NULL festlegbare Typen sind Instanzen der <xref:System.Nullable%601?displayProperty=nameWithType>-Struktur. Ein Nullable-Typ kann den richtigen Bereich an Werten für den zugrunde liegenden Werttyp plus einen zusätzlichen null-Wert darstellen. Einem Nullable<Int32> (ausgesprochen „Nullable von Int32“) kann jeder Wert im Bereich von -2147483648 bis 2147483647 oder ein null-Wert zugewiesen werden. Einem Nullable<bool> können die Werte true, false oder null zugewiesen werden. Die Möglichkeit, null zu numerischen und booleschen Typen zuzuweisen, ist besonders nützlich, wenn Sie mit Datenbanken und anderen Datentypen mit Elementen arbeiten, denen möglicherweise kein Wert zugewiesen wurde. Ein boolesches Feld in einer Datenbank kann beispielsweise die Werte true oder false speichern oder nicht definiert sein.

using System;

class NullableExample
{
  static void Main()
  {
      int? num = null;

      // Is the HasValue property true?
      if (num.HasValue)
      {
          Console.WriteLine("num = " + num.Value);
      }
      else
      {
          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 (InvalidOperationException e)
      {
         Console.WriteLine(e.Message);
      }
   }
}
// The example displays the following output:
//       num = Null
//       Nullable object must have a value.

Weitere Beispiele finden Sie unter Verwenden von Nullable-Typen.

Übersicht über Nullable-Typen

Nullable-Typen weisen die folgenden Eigenschaften auf:

  • Nullable-Typen stellen Werttypvariablen dar, denen der Wert null zugewiesen werden kann. Sie können keinen Nullable-Typ basierend auf einem Verweistyp erstellen. (Verweistypen unterstützen immer den null-Wert.)

  • Die Syntax T? ist die Kurzform für <xref:System.Nullable%601>, wobei T ein Werttyp ist. Die beiden Formen sind austauschbar.

  • Sie weisen einem Nullable-Typ einen Wert genauso zu, wie Sie es für einen regulären Werttyp tun würden, z.B. int? x = 10; oder double? d = 4.108. Einem Nullable-Typ kann auch der Wert null:int? x = null. zugewiesen werden.

  • Verwenden Sie die <xref:System.Nullable%601.GetValueOrDefault%2A?displayProperty=nameWithType>-Methode, um entweder 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ützten Eigenschaften <xref:System.Nullable%601.HasValue%2A> und <xref:System.Nullable%601.Value%2A>, um auf NULL zu prüfen und den Wert abzurufen, wie im folgenden Beispiel gezeigt: if(x.HasValue) j = 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.

    • Die Eigenschaft Value gibt einen Wert zurück, sofern einer zugewiesen ist. Andernfalls wird eine <xref:System.InvalidOperationException?displayProperty=nameWithType> ausgelöst.

    • Der Standardwert für HasValue lautet false. Die Eigenschaft Value hat keinen Standardwert.

    • Sie können auch die Operatoren == und != mit einem Nullable-Typ verwenden, wie im folgenden Beispiel gezeigt: if (x != null) y = x;

  • Verwenden Sie den Operator ??, um einen Standardwert zuzuweisen, der angewendet wird, wenn ein Nullable-Typ, dessen aktueller Wertnull lautet, einem Nicht-Nullable-Typ zugewiesen wird, z.B.: int? x = null; int y = x ?? -1;

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

Weitere Informationen finden Sie unter:

C#-Programmiersprachenspezifikation

Weitere Informationen erhalten Sie unter C#-Sprachspezifikation. Die Sprachspezifikation ist die verbindliche Quelle für die Syntax und Verwendung von C#.

Siehe auch

<xref:System.Nullable>
C#-Programmierhandbuch
C#
C#-Referenz
What exactly does 'lifted' mean? (Was bedeutet „Lifted“ genau?)