Ho notato che gli array hanno il metodo SetValue, che sembra un po 'fuori luogo quando si possono semplicemente usare gli indicizzatori. C'è qualche scopo speciale per SetValue? L'articolo MSDN non sembrava dire cosa fosse SetValue, solo come usarlo. Quale metodo sarebbe più efficiente da usare per quanto riguarda la velocità?Utilizzo del metodo SetValue di un array rispetto all'indicizzatore []
9
A
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
}
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 –
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. –
@PeterMortensen, COM è davvero un posto spaventoso. :) Ma questa è un'informazione interessante. –