Frage

Warum hat der parameterlos Guid Konstruktor eine leere GUID und nicht standardmäßig auf einen dynamisch erzeugten ein als mit Guid.NewGuid () erzeugen?

Gibt es eine bestimmte Verwendung für eine leere Guid?

War es hilfreich?

Lösung

  

Warum hat der parameterlos Guid Konstruktor eine leere GUID und nicht standardmäßig auf einen dynamisch erzeugten ein als mit Guid.NewGuid () erzeugen?

Kurze Antwort:. Da die Sprache / Laufzeit nicht der Designer der Guid Typ ließ sich einen Default-Konstruktor definieren

Es ist nicht nur herkömmliches, dass der Wert eines „default-konstruiert“ struct Null ist, kann man einfach nicht über einen Standardkonstruktor für eine Struktur definieren. Wenn Sie neue Guid sagen () der Laufzeit gibt Ihnen ein neues Objekt in dem alle Felder auf ihre Standardwerte initialisiert werden: http://msdn.microsoft.com/en-us/library/ah19swz4%28VS.71%29.aspx

können Einige Gründe hier: http: //www.yoda. arachsys.com/csharp/faq/#struct.constructors

Andere Tipps

Dieses Verhalten ist mit dem Rest der Werttypen in .NET Framework konsistent. Wenn „newing up“ ein Werttyp, wird ein Standardwert verwendet. Dies geschieht nur für Guid der Standard zu sein, ähnlich wie Int32 der Standardwert 0.

Eine leere guid ist nützlich, um das Fehlen einer Guid darzustellen. Da Werttypen keine Nullwerte enthalten sind (standardmäßig ja können Sie auf NULL festlegbare verwenden).

Zum Beispiel verwende ich eine GUID als Id Eigenschaften viel, weil sie real sind leicht zu verarbeiten. So ein Weg, um zu sehen, ob ein Objekt beibehalten worden (das ist, wenn es seine Id bekommt), kann ich den Wert von id gegen einen leeren guid überprüfen.

Ich denke, es üblich ist, dass der Standardwert, eine Struktur oder einen eingebauten Typ, ist gleich Null.

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