Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Nullable<T>-Struktur

 

Veröffentlicht: Oktober 2016

Stellt einen Werttyp dar, der null zugewiesen werden kann.

Namespace:   System
Assembly:  mscorlib (in mscorlib.dll)

[SerializableAttribute]
public struct Nullable<T>
where T : struct

Typparameter

T

Der zugrunde liegende Werttyp des generischen Nullable<T>-Typs.

NameBeschreibung
System_CAPS_pubmethodNullable<T>(T)

Initialisiert eine neue Instanz der Nullable<T>-Struktur mit dem angegebenen Wert.

NameBeschreibung
System_CAPS_pubpropertyHasValue

Ruft einen Wert ab, der angibt, ob das aktuelle Nullable<T>-Objekt einen gültigen Wert des zugrunde liegenden Typs hat.

System_CAPS_pubpropertyValue

Ruft den Wert des aktuellen Nullable<T>-Objekts ab, wenn ihm ein gültiger zugrunde liegender Wert zugewiesen wurde.

NameBeschreibung
System_CAPS_pubmethodEquals(Object)

Gibt an, ob das aktuelle Nullable<T>-Objekt einem angegebenen Objekt entspricht.(Überschreibt ValueType.Equals(Object).)

System_CAPS_pubmethodGetHashCode()

Ruft den Hashcode des Objekts ab, das von der Value-Eigenschaft zurückgegeben wird.(Überschreibt ValueType.GetHashCode().)

System_CAPS_pubmethodGetType()

Ruft den Type der aktuellen Instanz ab.(Geerbt von „Object“.)

System_CAPS_pubmethodGetValueOrDefault()

Ruft den Wert des aktuellen Nullable<T>-Objekts oder den Standardwert des Objekts ab.

System_CAPS_pubmethodGetValueOrDefault(T)

Ruft den Wert des aktuellen Nullable<T>-Objekts oder den angegebenen Standardwert ab.

System_CAPS_pubmethodToString()

Gibt die Textdarstellung des Werts des aktuellen Nullable<T>-Objekts zurück.(Überschreibt ValueType.ToString().)

NameBeschreibung
System_CAPS_puboperatorSystem_CAPS_staticExplicit(Nullable<T> to T)

Definiert eine explizite Konvertierung einer Nullable<T>-Instanz in den zugrunde liegenden Wert.

System_CAPS_puboperatorSystem_CAPS_staticImplicit(T to Nullable<T>)

Erstellt ein neues Nullable<T>-Objekt, das mit einem angegebenen Wert initialisiert wurde.

Ein Typ gilt als NULL-Werte zulässt, wenn es ein Wert zugewiesen werden kann oder zugewiesen werden null, was bedeutet, dass den Typ verfügt über keinen Wert zurückgibt. In der Standardeinstellung alle Referenztypen, wie z. B. String, sind NULL-Werte zulässt, werden aber alle Typen, z. B. Int32, nicht.

In c# und Visual Basic, markieren Sie einen Werttyp als NULL-Werte zulässt, mithilfe der ? Notation nach den Werttyp. Z. B. int? in c# oder Integer? in Visual Basic deklariert einen Integer-Wert-Typ, die zugewiesen werden können null.

Der Nullable<T> -Struktur unterstützt die Verwendung von nur eines Werttyps als einen Typ, da Verweistypen NULL-Werte zulässt, beabsichtigt sind.

Die Nullable Klasse unterstützt die Nullable<T> Struktur. Die Nullable -Klasse unterstützt das Abrufen des zugrunde liegende Typs kein Werttyp ist, und Vergleiche und Gleichheitsoperationen Vorgänge mit Paaren von Typen, deren zugrunde liegender Werttyp, generische Vergleiche und Gleichheitsoperationen-Vorgänge werden nicht unterstützt.

Die zwei wesentlichen Member von der Nullable<T> Struktur sind die HasValue und Value Eigenschaften. Wenn die HasValue -Eigenschaft für ein Nullable<T> Objekt true, mit der Wert des Objekts zugegriffen werden die Value Eigenschaft. Wenn die HasValue -Eigenschaft ist false, der Wert des Objekts ist nicht definiert und Zugriff auf die Value -Eigenschaft löst eine InvalidOperationException.

Wenn kein Werttyp mittels Boxing konvertiert wird, die common Language Runtime schachtelt den zugrunde liegenden Wert der Nullable<T> -Objekt und nicht die Nullable<T> Objekt selbst. D. h. wenn die HasValue -Eigenschaft ist true, den Inhalt des der Value Eigenschaft geschachtelt ist. Wenn Sie der zugrunde liegenden Wert kein Werttyp mittels Unboxing konvertiert wird, erstellt die common Language Runtime eine neue Nullable<T> Struktur, die auf den zugrunde liegenden Wert initialisiert.

Wenn die HasValue Eigenschaft kein Werttyp ist false, ist das Ergebnis der Boxing-Vorgang null. Folglich wird ein geschachtelter Typ an eine Methode, die ein Objektargument erwartet übergeben, diese Methode muss vorbereitet sein, Fälle zu behandeln, wobei das Argument ist null. Beim null wird mittels Unboxing zurückkonvertiert, in einen Typ, die common Language Runtime erstellt eine neue Nullable<T> Struktur und initialisiert seine HasValue -Eigenschaft false.

Beginnend mit der .NET Framework 4.5.1, können Sie enthalten eine Nullable<T> Typ als Member einer Struktur in einer WinMD-Bibliothek exportiert. Früher war dies nicht unterstützt.

Im folgenden Codebeispiel werden drei Zeilen einer Tabelle in der Microsoft Pubs-Beispieldatenbank definiert. Die Tabelle enthält zwei Spalten, die keine Nullwerte zulässig sind und zwei Spalten, die NULL zulassen.

using System;

class Sample 
{
    // Define the "titleAuthor" table of the Microsoft "pubs" database. 
    public struct titleAuthor 
    {
      // Author ID; format ###-##-####
      public string au_id;
      // Title ID; format AA####
      public string title_id;
      // Author ORD is nullable.
      public short? au_ord;
      // Royalty Percent is nullable.
      public int? royaltyper;
    }

    public static void Main() 
    {
      // Declare and initialize the titleAuthor array.
      titleAuthor[] ta = new titleAuthor[3];
      ta[0].au_id = "712-32-1176";
      ta[0].title_id = "PS3333";
      ta[0].au_ord = 1;
      ta[0].royaltyper = 100;

      ta[1].au_id = "213-46-8915";
      ta[1].title_id = "BU1032";
      ta[1].au_ord = null;
      ta[1].royaltyper = null;

      ta[2].au_id = "672-71-3249";
      ta[2].title_id = "TC7777";
      ta[2].au_ord = null;
      ta[2].royaltyper = 40;

      // Display the values of the titleAuthor array elements, and 
      // display a legend.
      Display("Title Authors Table", ta);
      Console.WriteLine("Legend:");
      Console.WriteLine("An Author ORD of -1 means no value is defined.");
      Console.WriteLine("A Royalty % of 0 means no value is defined.");
    }

    // Display the values of the titleAuthor array elements.
    public static void Display(string dspTitle, 
                               titleAuthor[] dspAllTitleAuthors)
    {
      Console.WriteLine("*** {0} ***", dspTitle);
      foreach (titleAuthor dspTA in dspAllTitleAuthors) {
         Console.WriteLine("Author ID ... {0}", dspTA.au_id);
         Console.WriteLine("Title ID .... {0}", dspTA.title_id);
         Console.WriteLine("Author ORD .. {0}", dspTA.au_ord ?? -1);
         Console.WriteLine("Royalty % ... {0}", dspTA.royaltyper ?? 0);
         Console.WriteLine();       
      }
    }
}
// The example displays the following output:
//     *** Title Authors Table ***
//     Author ID ... 712-32-1176
//     Title ID .... PS3333
//     Author ORD .. 1
//     Royalty % ... 100
//     
//     Author ID ... 213-46-8915
//     Title ID .... BU1032
//     Author ORD .. -1
//     Royalty % ... 0
//     
//     Author ID ... 672-71-3249
//     Title ID .... TC7777
//     Author ORD .. -1
//     Royalty % ... 40
//     
//     Legend:
//     An Author ORD of -1 means no value is defined.
//     A Royalty % of 0 means no value is defined.

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 2.0
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Windows Phone
Verfügbar seit 8.1

Alle öffentlichen statischen Member ( Shared in Visual Basic) dieses Typs sind threadsicher. Die Threadsicherheit für Instanzmember ist nicht garantiert.

Zurück zum Anfang
Anzeigen: