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. Ein Nullable-Typ kann den richtigen Bereich an Werten für den zugrunde liegenden Werttyp plus einen zusätzlichen null-Wert darstellen.A nullable type can represent the correct range of values for its underlying value type, plus an additional null value. Einem Nullable<Int32> (ausgesprochen „Nullable von Int32“) kann jeder Wert im Bereich von -2147483648 bis 2147483647 oder ein null-Wert zugewiesen werden.For example, a Nullable<Int32>, pronounced "Nullable of Int32," can be assigned any value from -2147483648 to 2147483647, or it can be assigned the null value. Einem Nullable<bool> können die Werte true, false oder null zugewiesen werden.A Nullable<bool> can be assigned the values true, false, or null. 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.The ability to assign null to numeric and Boolean types is especially useful when you are dealing with databases and other data types that contain elements that may not be assigned a value. Ein boolesches Feld in einer Datenbank kann beispielsweise die Werte true oder false speichern oder nicht definiert sein.For example, a Boolean field in a database can store the values true or false, or it may be undefined.

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.For more examples, see Using Nullable Types

Übersicht über Nullable-TypenNullable Types Overview

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 value of null. 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 die Kurzform für Nullable<T>, wobei T ein Werttyp ist.The syntax T? is shorthand for Nullable<T>, where T is a value type. 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 regulären Werttyp tun würden, z.B. int? x = 10; oder double? d = 4.108.Assign a value to a nullable type just as you would for an ordinary value type, for example int? x = 10; or double? d = 4.108. Einem Nullable-Typ kann auch der Wert null:int? x = null. zugewiesen werden.A nullable type can also be assigned the value null: int? x = null.

  • Verwenden Sie die Nullable<T>.GetValueOrDefault-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();Use the Nullable<T>.GetValueOrDefault method to return either the assigned value, or the default value for the underlying type if the value is null, for example int j = x.GetValueOrDefault();

  • Verwenden Sie die schreibgeschützten Eigenschaften HasValue und Value, um auf NULL zu prüfen und den Wert abzurufen, wie im folgenden Beispiel gezeigt: if(x.HasValue) j = x.Value;Use the HasValue and Value read-only properties to test for null and retrieve the value, as shown in the following example: 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.The HasValue property returns true if the variable contains a value, or false if it is null.

    • Die Eigenschaft Value gibt einen Wert zurück, sofern einer zugewiesen ist.The Value property returns a value if one is assigned. Andernfalls wird eine System.InvalidOperationException ausgelöst.Otherwise, a System.InvalidOperationException is thrown.

    • Der Standardwert für HasValue lautet false.The default value for HasValue is false. Die Eigenschaft Value hat keinen Standardwert.The Value property has no default value.

    • Sie können auch die Operatoren == und != mit einem Nullable-Typ verwenden, wie im folgenden Beispiel gezeigt: if (x != null) y = x;You can also use the == and != operators with a nullable type, as shown in the following example: 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;Use the ?? operator to assign a default value that will be applied when a nullable type whose current value is null is assigned to a non-nullable type, for example int? x = null; int y = x ?? -1;

  • 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 will not compile: Nullable<Nullable<int>> n;

Weitere Informationen finden Sie unter: For more information:

C#-ProgrammiersprachenspezifikationC# Language Specification

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

Siehe auchSee Also

Nullable
C#-ProgrammierhandbuchC# Programming Guide
C#C#
C#-ReferenzC# Reference
What exactly does 'lifted' mean? (Was bedeutet „Lifted“ genau?)What exactly does 'lifted' mean?