Warum haben die Designer von C# so etwas nicht zugelassen?Warum gibt es in C# keine deklarative Unveränderlichkeit?
public readonly class ImmutableThing
{
...
}
Eine der wichtigsten Möglichkeiten, um sicheres Multi-Threading ist die Verwendung von unveränderlichen Objekten/Klassen, doch gibt es keine Möglichkeit, eine Klasse, die als unveränderlich zu erklären. Ich weiß, dass ich es durch eine korrekte Umsetzung unwandelbar machen kann, aber wenn dies durch eine Klassenerklärung durchgesetzt würde, würde es so viel einfacher und sicherer werden. Eine Klasse als unveränderlich zu bewerten, ist bestenfalls eine "Türsteher" -Lösung.
Ein Blick auf eine Klassendeklaration und Sie würden sofort wissen, dass es unveränderlich ist. Wenn Sie den Code einer anderen Person ändern müssten, würden Sie wissen, dass eine Klasse keine Änderungen durch Absicht zulässt. Ich kann hier nur Vorteile sehen, aber ich kann nicht glauben, dass niemand vorher darüber nachgedacht hat. Warum wird nicht unterstützt?
EDIT
Einige sagen, dass dies nicht sehr wichtiges Merkmal ist aber, dass mich nicht wirklich überzeugen. Multicore-Prozessoren zeigten sich, weil die zunehmende Leistung durch die Frequenz eine Wand traf. Supercomputer sind stark Multiprozessor-Maschinen. Die parallele Verarbeitung wird immer wichtiger und ist einer der wichtigsten Wege, um die Leistung zu verbessern. Die Unterstützung für Multithreading und parallele Verarbeitung in .NET ist von Bedeutung (verschiedene Lock-Typen, Thread-Pool, Tasks, Async-Aufrufe, gleichzeitige Collections, blockierende Sammlung, parallele foreach, PLINQ und so weiter) und es scheint mir alles, was Ihnen hilft parallel zu schreiben Code gibt leichter einen Vorteil. Auch wenn es nicht trivial ist, es zu implementieren.
Weil es nicht ist. Wäre aber nett und würde Fenster auf der ganzen Linie öffnen, wenn sie die Sprache verbessern möchten. –
Ist das nicht eine Struktur? (Eine Klasse wie Entity mit Wert Semantik) – FishBasketGordo
@FishBasketGordo, nein. –