j'ai un réseau multidimensionnel de pointeurs vers entier (de rang inconnu) étant passé dans mes fonctions en tant que tel:valeur de réglage de manière dynamique sur tableau de pointeurs vers des nombres entiers
public unsafe static void MyMethod(Array source, ...)
{
//...
}
tableaux multidimensionnels de pointeurs sont construits à l'extérieur de la méthode et étant passé dans Voici un exemple:.
int*[,,,] testArray = new int*[10,10,5,5];
MyMethod(testArray);
Comment puis-je définir une valeur à un indice calculé d'exécution dans le tableau? Array.SetValue (...) fonctionne parfaitement pour les tableaux sans pointeur, mais refuse de fonctionner pour mon tableau int *. En utilisant le réflecteur, je vois SetValue se réduit à appeler InternalSetValue qui prend un objet pour la valeur mais il est marqué comme extern et je ne peux pas voir l'implémentation. J'ai pris une photo dans le noir et j'ai essayé de passer dans un encadré, mais pas de chance.
Non, ce n'est pas faux. Les tableaux sont alloués consécutivement. –
@Maximilian: Merci. Est-ce documenté quelque part? Ou est-ce un détail de mise en œuvre si le CLR? – dtb
Oui, ceci est spécifié par Ecma-335 (spécification CLI): "Les éléments du tableau doivent être disposés dans l'ordre du rang principal (les éléments associés à la dimension du tableau le plus à droite __sont disposés de manière contiguë au plus haut indice). " –