Gibt es eine etablierte Möglichkeit, ein schreibgeschütztes 2-d Array in C # zurückzugeben?
Ich weiß ReadOnlyCollection
ist das Richtige für ein 1-d-Array und ich bin froh, meine eigene Wrapper-Klasse zu schreiben, die ein this[] {get}
implementiert. Aber ich will das Rad nicht neu erfinden, wenn dieses Rad schon existiert.
Es gibt nur eine Möglichkeit, dies zu simulieren.
Sie müssen Ihre eigene Klasse mit einem privaten Array erstellen.
Die ähnlichste Implementierung eines Arrays ist ein Indexer:
Der Link '10 .8 'zeigt die Simulation eines zweidimensionalen Arrays.
Wenn Sie den Indexer nur mit einem Getter implementieren, kann der Benutzer die Elemente nur lesen, aber nicht schreiben. Wenn jedoch jedes Element ein Objekt (Referenztyp) ist, können Sie die Änderung der Eigenschaften des aufgerufenen Objekts nicht verhindern.
Es gibt jedoch mehrere Möglichkeiten, "schreibgeschützte" Objekte zu simulieren:
int
) In anderen Sprachen wie C ++ gibt es Referenzen und Zeiger auf konstante Werte, aber diese existiert nicht in C #.
Leider gibt es keine eingebaute Implementierung, um einen Fall zu bearbeiten, nach dem Sie fragen. Aber eine einfache Implementierung allein sollte nicht schwierig sein.
Der einzige Gedanke, ich hoffe Sie wissen, dass Sie eine readonly Sammlung , aber nicht Elemente innerhalb dieser Sammlung tun werden.
Hoffe, das hilft.
Tags und Links c# immutability readonly