Ich habe gerade angefangen c #. Aber kann nicht herausfinden DateTime
. Ich weiß, dass es eine Struktur ist, aber warum sehe ich verschiedene Möglichkeiten, es irgendwann wie eine Klasse zu initialisieren.
Wie ist das, wenn es eine Struktur ist?
%Vor%Gibt es also zwei Versionen von datetime in c # ist eine Struktur und andere ist Klasse?
Ein Typ kann nicht gleichzeitig ein struct
und ein By-Reference-Typ sein. Beide Konstrukte machen DateTime
, was ein Werttyp ist (auch bekannt als struct
).
Der Unterschied zwischen den beiden besteht darin, dass der erste den zu kopierenden Wert in einer statischen Eigenschaft namens Now
erzeugt und der zweite den Wert durch einen der 11 Konstruktoren von DateTime
initialisiert.
Die Verwendung des Schlüsselwortes new
bedeutet nicht, dass es eine Instanz einer Klasse erstellt. Es erstellt eine Instanz einer Struktur. Konstrukte können auch Konstruktoren haben, und sie werden (in C #) mit der gleichen Syntax wie Klassen initialisiert, obwohl sie Strukturen sind.
DateTime ist eine Struktur. Und Strukturen könnten auch Konstruktoren haben. Werfen Sie einen Blick auf diese Dokumentation Wenn Sie überrascht werden wollen, Sie können eine ganze Zahl wie folgt definieren:
%Vor%Es ist in der Tat eine Struktur. Um zu wissen, welcher Typ etwas ist, können Sie zwei Dinge tun:
1) Sehen Sie sich das Dokument an. Für DateTime wird dies im Titel
deutlich angezeigt
2) Bewegen Sie den Mauszeiger über den Typ. Visual Studio wird eine QuickInfo veröffentlichen:
Structs verhalten sich meist wie Klassen, Sie können sie mit dem Operator new
instanziieren und sie können auch Methoden haben. Sie können nicht die Art verwenden, in der sie instanziiert werden, um festzustellen, ob etwas eine Struktur oder eine Klasse ist.
System.DateTime
ist ein struct
.
Was nicht bedeutet, dass es nicht viele verschiedene Konstruktoren und Methoden und Überladungen geben kann.
DateTime ist eine Struktur: MSDN Struct Documentation . aspx. Structs können Konstruktoren überladen.
Wenn Sie den Mauszeiger über DateTime
bewegen, sagt Intellisense übrigens struct System.DateTime
.
Ein Struct ist mehr wie eine leichte Klasse und ein Wert anstelle eines Objekts. Eine DateTime ist eine dieser Strukturen