Ist die Datetime-Struktur oder -Klasse in C #? [geschlossen]

7

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?

    
Ozgur Erdogan 09.01.2014, 22:13
quelle

7 Antworten

8

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.

    
dasblinkenlight 09.01.2014, 22:16
quelle
8

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.

    
Servy 09.01.2014 22:15
quelle
4

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%     
Selman Genç 09.01.2014 22:15
quelle
3

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.

    
Pierre-Luc Pineault 09.01.2014 22:31
quelle
2

System.DateTime ist ein struct .

Was nicht bedeutet, dass es nicht viele verschiedene Konstruktoren und Methoden und Überladungen geben kann.

    
Federico Berasategui 09.01.2014 22:15
quelle
1

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 .

    
pcnThird 09.01.2014 22:15
quelle
-3

Ein Struct ist mehr wie eine leichte Klasse und ein Wert anstelle eines Objekts. Eine DateTime ist eine dieser Strukturen

    
Rob Landers 09.01.2014 22:20
quelle

Tags und Links