In C können Sie auf bestimmte Zeile im Array zeigen, weil C-Array nur eine Sequenz von Elementen ist. Zwei aufeinanderfolgende Arrays sind wiederum nur eine Abfolge von Elementen, und deshalb ist es möglich, in C auf das Sub-Array zuzugreifen. Deshalb können Sie die Größe eines Arrays in C nicht direkt vom Array-Pointer abrufen. In C# gibt es zwei Typen von "multidimensionalen" Arrays: Multidimensional arrays und Jagged Arrays.
Klassisches multidimensionales kann nicht nur durch Unterindex zugreifen, weil Array in C# nicht nur eine Abfolge von Elementen ist, sondern auch eine header in which contain size of array, type pointer and sync block. Zwei nachfolgende C# -Arrays enthalten einen Header und das C# -Array-Format wird nicht erfüllt.
Jagged array ist Array von Arrays und Sie können auf Sub-Array mit nur Sub-Index in ähnlicher Weise wie C# zugreifen.
Equivalent Code in C# wäre:
byte[][] palette = new byte[4][];
for (int i = 0; i < palette.Length; i++)
{
palette[i] = new byte[4];
}
byte[] destination = new byte[4];
int val = 1;
Array.Copy(palette[val & 3], 0, destination, 12, 4);
Beachten Sie, dass in memcpy sind Parameter in der Reihenfolge: Ziel, Quelle während in Array.Copy Parameter sind in umgekehrter Reihenfolge: Quelle, Ziel
Was ist mit 'val% 3'? – rhughes