Using an array's SetValue method vs. the [] indexers

Thick_propheT picture Thick_propheT · May 16, 2012 · Viewed 9.5k times · Source

I noticed that arrays have the SetValue method, which seems a little out of place when you could just use the indexers. Is there some special purpose for SetValue? The MSDN article didn't seem to say what SetValue was for, just how to use it. Which method would be more efficient to use as far as speed goes?

Answer

Kirk Woll picture Kirk Woll · May 16, 2012

Sometimes all you have of an array is that it's an Array. The Array class does not have indexers, so the best way to set/get element values on it is via the GetValue and SetValue methods. For example:

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