2012-05-16 18 views

risposta

15

A volte tutto ciò che si ha di un array è che è un Array. La classe Array non ha indicizzatori, quindi il modo migliore per impostare/ottenere valori elemento su di esso è tramite i metodi GetValue e SetValue. Per esempio:

private void M(Array array) 
{ 
    array[0] = 5;   // <-- Compiler error 
    array.SetValue(5, 0); // <-- Works 
} 
+3

Inoltre, se non si conosce il numero di dimensioni della matrice in fase di compilazione, è possibile utilizzare la SetValue '(Object, Int32 [])' sovraccarico per specificare gli elementi in fase di esecuzione: http : //msdn.microsoft.com/en-us/library/758awxk7.aspx –

+0

Da dove vengono avviati gli indici? Uno si aspetterebbe 0, ma oggi ho riscontrato un valore restituito da un componente COM con un tipo .NET di matrice, ma gli indici iniziarono a 1, non a 0. –

+0

@PeterMortensen, COM è davvero un posto spaventoso. :) Ma questa è un'informazione interessante. –