Warum erlaubt C# 8.0 schreibgeschützte Member in einer Struktur, aber nicht in einer Klasse?C#

Ein Treffpunkt für C#-Programmierer
Guest
 Warum erlaubt C# 8.0 schreibgeschützte Member in einer Struktur, aber nicht in einer Klasse?

Post by Guest »

C# 8.0 führte schreibgeschützte-Mitglieder in einer Struktur ein (wie hier erklärt). So können Sie zum Beispiel diese Methode verwenden:

Code: Select all

public readonly override string ToString() => $"({X}, {Y}) is {Distance} from the origin";
Außerdem wird Ihre schreibgeschützte-Methode nicht kompiliert, wenn sie einen Status der Struktur ändert – was ich als recht nützliche und elegante Lösung halte. Wenn also beispielsweise im folgenden Beispiel X und Y Eigenschaften einer Struktur sind, wird die folgende Methode nicht kompiliert:

Code: Select all

public readonly void Translate(int xOffset, int yOffset)
{
X += xOffset;
Y += yOffset;
}
Wiederum eine sehr nützliche und elegante Möglichkeit, die Absicht des Codes auszudrücken.
Warum ist das dann nur mit Strukturen und nicht mit Klassen möglich? ? Wenn ich versuche, readonly zu einer Methode in einer Klasse hinzuzufügen, erhalte ich einen Compilerfehler:

Der Modifikator „readonly“ ist hierfür nicht gültig item.

Gibt es Einschränkungen eines Referenztyps, bei denen eine schreibgeschützte Methode keinen Sinn ergibt?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post