Nullable<T> Nullable<T> Nullable<T> Nullable<T> Struct

Definition

Stellt einen Werttyp dar, der null zugewiesen werden kann. Represents a value type that can be assigned null.

generic <typename T>
 where T : value classpublic value class Nullable
[System.Serializable]
public struct Nullable<T> where T : struct
type Nullable<'T (requires 'T : struct)> = struct
Public Structure Nullable(Of T)

Typparameter

T

Der zugrunde liegende Werttyp des generischen Nullable<T>-Typs. The underlying value type of the Nullable<T> generic type.

Vererbung
Nullable<T>Nullable<T>Nullable<T>Nullable<T>
Attribute

Beispiele

Das folgende Codebeispiel definiert drei Zeilen einer Tabelle in der Microsoft Pubs-Beispieldatenbank.The following code example defines three rows of a table in the Microsoft Pubs sample database. Die Tabelle enthält zwei Spalten, die nicht NULL sind und zwei Spalten, die NULL-Werte zulassen.The table contains two columns that are not nullable and two columns that are nullable.

using namespace System;

// Define the "titleAuthor" table of the Microsoft "pubs" database.
value struct titleAuthor
{
    public:
       // Author ID; format ###-##-####
       String^ au_id;
       // Title ID; format AA####
       String^ title_id;
       // Author ORD is nullable.
       Nullable<short> au_ord;
       // Royalty Percent is nullable.
       Nullable<int> royaltyper;

    // Display the values of the titleAuthor array elements.
    static void Display(String^ dspTitle,
                        array<titleAuthor>^ dspAllTitleAuthors)
    {
       Console::WriteLine("*** {0} ***", dspTitle);
       for each (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.HasValue ?
                             dspTA.au_ord.Value : -1);
          Console::WriteLine("Royalty % ... {0}", dspTA.royaltyper.HasValue ?
                             dspTA.royaltyper.Value : 0);
          Console::WriteLine();
       }
    }
};

void main()
{
    // Declare and initialize the titleAuthor array.
    array<titleAuthor>^ ta = gcnew array<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 = nullptr;
//    ta[1].royaltyper = nullptr;

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

   // Display the values of the array elements, and
   // display a legend.
    titleAuthor::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.");
}
// 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.
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.
Class Sample
    ' Define the "titleAuthor" table of the Microsoft "pubs" database. 
    Public Structure titleAuthor
       ' Author ID; format ###-##-####
        Public au_id As String
        ' Title ID; format AA####
        Public title_id As String
        ' Author ORD is nullable.
        Public au_ord As Nullable(Of Short)
        ' Royalty Percent is nullable.
        Public royaltyper As Nullable(Of Integer)
    End Structure 
    
    Public Shared Sub Main() 
       ' Declare and initialize the titleAuthor array.
        Dim ta(2) As titleAuthor
        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 = Nothing
        ta(1).royaltyper = Nothing
        
        ta(2).au_id = "672-71-3249"
        ta(2).title_id = "TC7777"
        ta(2).au_ord = Nothing
        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.")
    End Sub
    
    ' Display the values of the titleAuthor array elements.
    Public Shared Sub Display(ByVal dspTitle As String, _
                              ByVal dspAllTitleAuthors() As titleAuthor) 
        Console.WriteLine("*** {0} ***", dspTitle)
        Dim dspTA As titleAuthor
        For Each 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.GetValueOrDefault(-1))
            Console.WriteLine("Royalty % ... {0}", dspTA.royaltyper.GetValueOrDefault(0))
            Console.WriteLine()
        Next 
    End Sub
End Class 
'This 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.

Hinweise

Ein Typ gilt als NULL-Werte zulässt, wenn es ein Wert zugewiesen werden kann, oder zugewiesen werden kann null, was bedeutet, dass den Typ verfügt über keinen Wert, der überhaupt.A type is said to be nullable if it can be assigned a value or can be assigned null, which means the type has no value whatsoever. In der Standardeinstellung alle Verweistypen, z. B. String, sind NULL-Werte zulässt, aber alle Wert Typen, z. B. Int32, sind nicht.By default, all reference types, such as String, are nullable, but all value types, such as Int32, are not.

In c# und Visual Basic, markieren Sie einen Werttyp als NULL-Werte zulässt, mithilfe der ? Notation nach den Werttyp.In C# and Visual Basic, you mark a value type as nullable by using the ? notation after the value type. Z. B. int? in c# oder Integer? in Visual Basic deklariert einen Ganzzahl-Werttyp, der zugewiesen werden kann null.For example, int? in C# or Integer? in Visual Basic declares an integer value type that can be assigned null.

Die Nullable<T> Struktur unterstützt die Verwendung von nur eines Werttyps als nullable-Typ, da Verweistypen NULL-Werte zulässt, beabsichtigt sind.The Nullable<T> structure supports using only a value type as a nullable type because reference types are nullable by design.

Die Nullable -Klasse unterstützt für die Nullable<T> Struktur.The Nullable class provides complementary support for the Nullable<T> structure. Die Nullable -Klasse unterstützt das Abrufen des zugrunde liegende Typs eines nullable-Typs und Vergleich und Gleichheit Vorgänge auf Paare von auf NULL festlegbare Typen, deren zugrunde liegende Werttyp, unterstützt keine generischen Vergleich und Gleichheit-Vorgänge.The Nullable class supports obtaining the underlying type of a nullable type, and comparison and equality operations on pairs of nullable types whose underlying value type does not support generic comparison and equality operations.

Grundlegende EigenschaftenFundamental Properties

Die zwei grundlegende Elemente von der Nullable<T> Struktur werden die HasValue und Value Eigenschaften.The two fundamental members of the Nullable<T> structure are the HasValue and Value properties. Wenn die HasValue -Eigenschaft für eine Nullable<T> Objekt true, mit der Wert des Objekts zugegriffen werden die Value Eigenschaft.If the HasValue property for a Nullable<T> object is true, the value of the object can be accessed with the Value property. Wenn die HasValue Eigenschaft false, der Wert des Objekts ist nicht definiert und Zugreifen auf die Value Eigenschaft löst eine InvalidOperationException.If the HasValue property is false, the value of the object is undefined and an attempt to access the Value property throws an InvalidOperationException.

Boxing und UnboxingBoxing and Unboxing

Wenn ein nullable-Typ geschachtelt wird, automatisch Felder den zugrunde liegenden Wert von die common Language Runtime die Nullable<T> -Objekt und nicht die Nullable<T> Objekt selbst.When a nullable type is boxed, the common language runtime automatically boxes the underlying value of the Nullable<T> object, not the Nullable<T> object itself. D. h. wenn die HasValue -Eigenschaft ist true, den Inhalt des der Value Eigenschaft geschachtelt ist.That is, if the HasValue property is true, the contents of the Value property is boxed. Wenn die zugrunde liegenden Wert des einem nullable-Typ mittels Unboxing konvertiert wird, erstellt die common Language Runtime ein neues Nullable<T> Struktur, die auf den zugrunde liegenden Wert initialisiert.When the underlying value of a nullable type is unboxed, the common language runtime creates a new Nullable<T> structure initialized to the underlying value.

Wenn die HasValue -Eigenschaft von einem nullable-Typ ist false, einer Boxing-Vorgang ergibt null.If the HasValue property of a nullable type is false, the result of a boxing operation is null. Daher, wenn ein geschachtelter nullable-Typ auf eine Methode, die von einem Objektargument erwartet übergeben wird, dieser Methode muss vorbereitet werden um den Fall abzudecken, in dem das Argument ist null.Consequently, if a boxed nullable type is passed to a method that expects an object argument, that method must be prepared to handle the case where the argument is null. Wenn null wird mittels Unboxing zurückkonvertiert, in einen nullable-Typ, die common Language Runtime erstellt ein neues Nullable<T> Struktur und initialisiert seine HasValue Eigenschaft false.When null is unboxed into a nullable type, the common language runtime creates a new Nullable<T> structure and initializes its HasValue property to false.

.NET Framework 4.5.1.NET Framework 4.5.1 und Windows-Runtime-Komponentenand Windows Runtime Components

Beginnend mit der .NET Framework 4.5.1.NET Framework 4.5.1, können Sie enthalten eine Nullable<T> Typ als Member einer Struktur, die in einer WinMD-Bibliothek exportiert.Starting with the .NET Framework 4.5.1.NET Framework 4.5.1, you can include a Nullable<T> type as a member of a structure exported in a WinMD library. Dies wurde zuvor nicht unterstützt.Previously, this was not supported.

Konstruktoren

Nullable<T>(T) Nullable<T>(T) Nullable<T>(T) Nullable<T>(T)

Initialisiert eine neue Instanz der Nullable<T>-Struktur mit dem angegebenen Wert. Initializes a new instance of the Nullable<T> structure to the specified value.

Eigenschaften

HasValue HasValue HasValue HasValue

Ruft einen Wert ab, der angibt, ob das aktuelle Nullable<T>-Objekt einen gültigen Wert des zugrunde liegenden Typs hat. Gets a value indicating whether the current Nullable<T> object has a valid value of its underlying type.

Value Value Value Value

Ruft den Wert des aktuellen Nullable<T>-Objekts ab, wenn ihm ein gültiger zugrunde liegender Wert zugewiesen wurde. Gets the value of the current Nullable<T> object if it has been assigned a valid underlying value.

Methoden

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Gibt an, ob das aktuelle Nullable<T>-Objekt einem angegebenen Objekt entspricht. Indicates whether the current Nullable<T> object is equal to a specified object.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Ruft den Hashcode des Objekts ab, das von der Value-Eigenschaft zurückgegeben wird. Retrieves the hash code of the object returned by the Value property.

GetValueOrDefault() GetValueOrDefault() GetValueOrDefault() GetValueOrDefault()

Ruft den Wert des aktuellen Nullable<T>-Objekts oder den Standardwert des zugrunde liegenden Typs ab. Retrieves the value of the current Nullable<T> object, or the default value of the underlying type.

GetValueOrDefault(T) GetValueOrDefault(T) GetValueOrDefault(T) GetValueOrDefault(T)

Ruft den Wert des aktuellen Nullable<T>-Objekts oder den angegebenen Standardwert ab. Retrieves the value of the current Nullable<T> object, or the specified default value.

ToString() ToString() ToString() ToString()

Gibt die Textdarstellung des Werts des aktuellen Nullable<T>-Objekts zurück. Returns the text representation of the value of the current Nullable<T> object.

Operatoren

Explicit(Nullable<T> to T) Explicit(Nullable<T> to T) Explicit(Nullable<T> to T) Explicit(Nullable<T> to T)

Definiert eine explizite Konvertierung einer Nullable<T>-Instanz in den zugrunde liegenden Wert. Defines an explicit conversion of a Nullable<T> instance to its underlying value.

Implicit(T to Nullable<T>) Implicit(T to Nullable<T>) Implicit(T to Nullable<T>) Implicit(T to Nullable<T>)

Erstellt ein neues Nullable<T>-Objekt, das mit einem angegebenen Wert initialisiert wurde. Creates a new Nullable<T> object initialized to a specified value.

Gilt für:

Siehe auch