Was bedeutet „Datetime?“ Bedeutet in C #?
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?
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
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.