Nullable<(Of <(T>)>)-Struktur Home
This page is specific to:.NET Framework Version:2.03.03.5Silverlight 34.0
.NET Framework-Klassenbibliothek
Nullable<(Of <(T>)>)-Struktur

Aktualisiert: November 2007

Stellt ein Objekt dar, dessen zugrunde liegender Typ ein Werttyp ist und das auch nullNothingnullptrNULL-Verweis (Nothing in Visual Basic) wie einen Verweistyp zugewiesen werden kann.

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

<SerializableAttribute> _
Public Structure Nullable(Of T As {Structure, New})
Dim instance As Nullable(Of T)
[SerializableAttribute]
public struct Nullable<T>
where T : struct, new()

[SerializableAttribute]
generic<typename T>
where T : value class, gcnew()
public value class Nullable
JScript unterstützt keine generischen Typen oder Methoden.
J# unterstützt die Verwendung von generischen APIs, aber nicht die Deklaration von neuen generischen APIs.

Typparameter

T

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

Hinweise

NULL-Werte sind zulässig für Typen, denen entweder ein Wert oder nullNothingnullptrNULL-Verweis (Nothing in Visual Basic) zugewiesen werden kann, das heißt für Typen, denen nicht notwendigerweise ein Wert zugewiesen werden muss. Daher drückt ein Typ, für den NULL-Werte zulässig sind, entweder einen Wert aus, oder er drückt aus, dass kein Wert vorhanden ist. Beispielsweise sind für einen Verweistyp wie String NULL-Werte zulässig, für einen Werttyp wie Int32 dagegen nicht. Für einen Werttyp sind NULL-Werte unzulässig, weil er über ausreichend Kapazität verfügt, um nur die Werte auszudrücken, die diesem Typ entsprechen. Ein Werttyp verfügt nicht über die zusätzliche Kapazität, die erforderlich ist, um einen NULL-Wert auszudrücken.

Die Nullable<(Of <(T>)>)-Struktur unterstützt die Verwendung von nur einem Werttyp als einen Typ, für den NULL-Werte zulässig sind, da für Verweistypen per Definition NULL-Werte zulässig sind.

Die Nullable-Klasse unterstützt die Nullable<(Of <(T>)>)-Struktur. Die Nullable-Klasse unterstützt das Abrufen des zugrunde liegenden Typs eines Typs, für den NULL-Werte zulässig sind, und Vergleiche und Gleichheitsoperationen mit Paaren von Typen, für die NULL-Werte zulässig sind und deren zugrunde liegender Werttyp keine generischen Vergleiche oder Gleichheitsoperationen unterstützt.

Szenario

Verwenden Sie Typen, die NULL-Werte zulassen, um Sachen darzustellen, die situationsabhängig entweder vorhanden oder nicht vorhanden sind. Zum Beispiel ist ein optionales Attribut, das NULL-Werte zulässt, nicht in allen HTML-Tags vorhanden, und eine Spalte, die NULL-Werte zulässt, wird nicht in jeder Zeile einer Tabelle angezeigt.

Sie können das Attribut oder die Spalte als Feld in einer Klasse darstellen, und Sie können das Feld als Werttyp definieren. Das Feld kann alle gültigen Werte für das Attribut oder die Spalte enthalten, nicht jedoch einen zusätzlichen Wert anpassen, wonach das Attribut oder die Spalte nicht vorhanden ist. Definieren Sie in diesem Fall, dass das Feld kein Werttyp ist, sondern ein Feld, für das NULL-Werte zulässig sind.

Wesentliche Eigenschaften

Die zwei wesentlichen Member der Nullable<(Of <(T>)>)-Struktur sind die HasValue-Eigenschaft und die Value-Eigenschaft. Wenn die HasValue-Eigenschaft für ein Nullable<(Of <(T>)>)-Objekt true ist, kann der Wert des Objekts mit der Value-Eigenschaft aufgerufen werden. Wenn die HasValue-Eigenschaft false ist, ist der Wert des Objekts nicht definiert, und beim Versuch, die Value-Eigenschaft aufzurufen, wird eine InvalidOperationException ausgelöst.

Boxing und Unboxing

Wenn ein Typ, für den NULL-Werte zulässig sind, geschachtelt wird, schachtelt die Common Language Runtime den zugrunde liegenden Wert des Nullable<(Of <(T>)>)-Objekts, aber nicht das Nullable<(Of <(T>)>)-Objekt selbst. Das heißt, wenn die HasValue-Eigenschaft true ist, wird der Inhalt der Value-Eigenschaft geschachtelt. Wenn der zugrunde liegende Wert eines Typs, für den NULL-Werte zulässig sind, mittels Unboxing konvertiert wird, erstellt die Common Language Runtime eine neue Nullable<(Of <(T>)>)-Struktur, die mit dem zugrunde liegenden Wert initialisiert wird.

Wenn die HasValue-Eigenschaft false ist für einen Typ, für den Nullwerte zulässig sind, dann ist das Ergebnis eines Boxingvorgangs nullNothingnullptrNULL-Verweis (Nothing in Visual Basic). Wenn also an eine Methode ein geschachtelter Typ übergeben wird, für den Nullwerte zulässig sind, muss die Methode, die ein Objektargument erwartet, auch den Fall berücksichtigen, in dem das Argument nullNothingnullptrNULL-Verweis (Nothing in Visual Basic) ist. Wenn beim Unboxing nullNothingnullptrNULL-Verweis (Nothing in Visual Basic) in einen Typ geschrieben wird, für den Nullwerte zulässig sind, erstellt die Common Language Runtime eine neue Nullable<(Of <(T>)>)-Struktur und initialisiert deren HasValue-Eigenschaft auf false.

Beispiele

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

' This code example demonstrates the Nullable(Of T) class.
' The code example defines a database table in which two columns 
' are nullable. In the application, an array of rows is created 
' and initialized. The table rows could subsequently be 
' written to a database.

Imports System

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 'titleAuthor

    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 'Main

    ' 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 dspTA
    End Sub 'Display
End Class 'Sample

'
'This code example produces the following results:
'
'*** 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.
'


Threadsicherheit

Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.
Plattformen

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile für Smartphone, Windows Mobile für Pocket PC, Xbox 360

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.
Versionsinformationen

.NET Framework

Unterstützt in: 3.5, 3.0, 2.0

.NET Compact Framework

Unterstützt in: 3.5, 2.0

XNA Framework

Unterstützt in: 2.0, 1.0
Siehe auch

Referenz

Page view tracker
Bewerten Sie die kompakte Bibliothek
x
Kompakte Builds ohne Skripts (niedrige Bandbreite) durch zusätzliche, von Ihnen angeforderte Funktionen: ein Suchfeld und die Auswahlmöglichkeit einer Standardcodesprache.
Gefällt Ihnen das Suchfeld?
Gefallen Ihnen die Codeblöcke im Registerformat?
Wie nützlich ist dieses Thema?
Erzählen Sie uns mehr.
Vielen Dank
x
Sie helfen uns dabei, MSDN Online zu verbessern.
Rückmeldung
Ansicht wechseln
Klassisch
Kompakt
Ohne Skripts
Ansicht wechseln