Ich muss über ein Array beliebiger Rangfolge iterieren. Dies gilt sowohl für das Lesen als auch für das Schreiben, so dass GetEnumerator
nicht funktioniert.Indizierung in Arrays mit beliebigem Rang in C#
funktioniert nicht auf mehrdimensionalen Arrays. Array.SetValue(object, params int[])
würde übermäßige Arithmetik für die Iteration durch den multidimensionalen Raum erfordern. Es würde auch einen dynamischen Aufruf erfordern, um den params
Teil der Signatur zu umgehen.
Ich bin versucht, das Array zu pinnen und mit einem Zeiger darüber zu iterieren, aber ich kann keine Dokumentation finden, die besagt, dass mehrdimensionale Arrays garantiert zusammenhängend sind. Wenn sie am Ende einer Dimension aufgefüllt sind, funktioniert das nicht. Ich würde es auch vorziehen, unsicheren Code zu vermeiden.
Gibt es eine einfache Möglichkeit, ein mehrdimensionales Array mit nur einem einzigen Index sequenziell zu adressieren?
Ich sehe keinen Fehler bei der Verwendung von "unsicheren" Code. Es ist sicher, Zeiger zu verwenden, wenn Sie tatsächlich wissen, was Sie tun, und es ist eine praktikable und effiziente Lösung. –
Btw es ist vollkommen gültig, ein 'int []' zu übergeben, wo ein 'params int []' erwartet wird. – dtb
@ dtb, scheinen Sie an beiden Syntaxpunkten korrekt zu sein. Ich wusste nie, dass Sie ein Array direkt an einen params-Array-Parameter übergeben können. –