2009-04-27 9 views
2

Ich habe mehrere Threads hier über Strukturen gelesen (eine über veränderbare Strukturen) und ich lese weiter darüber, wie eine Struktur keine Identität haben sollte.Was bedeutet es, wenn eine Struktur keine Identität hat?

Was genau ist ein Mangel an Identität in einer Struktur? Ich vermute, es wäre wie eine Zahl, z.B. 5, keinen Kontext (5 was?). Während der Klient jemand ist, der einen Dienst erwartet, und somit gibt es eine Identität. Denke ich richtig?

Ich kenne die technischen Unterschiede und wie Strukturen threadsicher sind (solange sie nicht mutiert werden können, aber ich kann immer noch Methoden schreiben, um Status zu mutieren), sie haben neue Kopien jedes Mal wenn sie in eine Methode usw ...

+0

Interessieren Sie sich für einen Thread über Strukturen/Identität zu sprechen? –

+0

Sicher. http://stackoverflow.com/questions/608542/immutability-of-structs ist der Thread, den ich meine. – dotnetdev

Antwort

9

Es bedeutet, dass die einzigen Daten, die Sie über eine Struktur haben, die Werte sind speichert - es gibt keinen Unterschied zwischen einer "5" und einer anderen "5". Vergleichen Sie dies mit einer Klasse:

Person person1 = new Person("Jon"); 
Person person2 = new Person("Jon"); 
Person person3 = person2; 

Jetzt person1 und person2 Verweise auf verschiedene Objekte haben, obwohl sie beide die gleichen Daten enthalten. person2 und person3 beide beziehen sich auf die gleichen Objekte. Bei Strukturen existiert diese Unterscheidung nicht.

2

Struct ist ein Werttyp, also stellt es nur einen Wert dar. Eine ID wäre nur nützlich, um eine Referenz darauf zu erstellen. In diesem Fall ist es besser, eine Klasse zu sein.

0

Ich glaube, Sie sind mehr oder weniger von Evans' book beeinflusst, wo er Entitäten und Wertobjekte unterscheidet.

+0

Ich habe dieses Buch nie gelesen, aber ich denke, es kann helfen! :) – dotnetdev

Verwandte Themen