Frage

Ich lese ein Buch .Net, und in einem der Code-Beispiele gibt es eine Klassendefinition mit diesem Bereich:

private DateTime? startdate

Was bedeutet DateTime? das?

War es hilfreich?

Lösung

Da DateTime ein struct, kein class, erhalten Sie eine DateTime Objekt , kein Hinweis , wenn Sie ein Feld oder eine Variable dieses Typs deklarieren.

Und in der gleichen Weise wie ein int nicht null werden kann, so dass diese DateTime Objekt kann nie null werden, da es keine Referenz ist.

das Fragezeichen Hinzufügen verwandelt es in eine Nullable Type , was bedeutet, dass entweder es ein DateTime Objekt ist, oder es null ist.

DateTime? ist syntaktischer Zucker für Nullable<DateTime>, wobei Nullable ist selbst ein struct.

Andere Tipps

Es ist ein Nullable-Datetime. ? nach einer Urtyp / Struktur zeigt an, dass es die Nullable-Version ist.

Datetime ist eine Struktur, die niemals null sein kann. Von MSDN :

  

Der Wert Typ Datetime repräsentiert Daten und Zeiten mit Werten von 12.00.00 Mitternacht hin, 1. Januar 0001 Anno Domini oder AD (auch als Common Era oder CE bekannt) bis 11.59.59 Dezember 31, 9999 AD (CE)

DateTime? kann jedoch null sein.

? als Suffix für einen Werttyp für null Zuweisungen erlaubt, die unmöglich othwerwise würden.

http://msdn.microsoft.com/en-us/library/ b3h38hb0.aspx

  

Stellt ein Objekt dar, das zugrunde liegendes   Typ ist ein Werttyp, auch sein kann   eine Null-Referenz zugeordnet.

Das bedeutet, dass Sie so etwas schreiben können:

    DateTime? a = null;
    if (!a.HasValue)
    {
        a = DateTime.Now;
        if (a.HasValue)
        {
            Console.WriteLine(a.Value);
        }
    }

Datetime? ist syntaktisch äquivalent zu Nullable .

Es ist gleichbedeutend mit Nullable . Sie können anhängen „?“ einem primitiven Typ oder Struktur.

es gibt Ihnen grundsätzlich einen zusätzlichen Zustand für Primitive. Es kann ein Wert sein, oder es kann null sein. Es kann in Situationen nützlich sein, in denen ein Wert zugewiesen werden muss. So anstatt beispielsweise datetime.min oder max, können Sie weisen es null keinen Wert darstellen.

Wie wir wissen, ist Datetime eine Struktur bedeutet, Datetime ein Werttyp ist, so dass Sie ein Datetime-Objekt zu erhalten, keine Referenz, da Datetime ist keine Klasse, wenn Sie ein Feld oder eine Variable dieses Typs deklarieren Sie mit null nicht initial kann da Werttypen nicht null annehmen. Auf die gleiche Weise wie ein int kann nicht null sein. so Datetime-Objekt nie Null sein, weil es keine Referenz ist.

Aber manchmal müssen wir nullable Variable oder ein Feld von Werttypen, die Zeit, die wir Fragezeichen verwenden sie Nullable Type zu machen, damit sie null ermöglichen.

Beispiel: -

Datetime? date = null;

int? intValue = null;

In obigem Code Variable Datum ist ein Ziel der DateTime- oder es ist null. Das Gleiche gilt für intValue.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top