使用数组的SetValue方法与[]索引器

14

我注意到数组有SetValue方法,当你可以使用索引器时,这似乎有点不合适。 SetValue是否有特殊用途? MSDN文章似乎没有说明SetValue的用途,只是说明如何使用它。就速度而言,哪种方法更有效率?

1个回答

18

有时你只知道一个数组是一个 Array 类型,Array 类并没有索引器,所以在它上面设置/获取元素值的最佳方式是通过 GetValueSetValue 方法。例如:

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

3
如果你在编译时不知道数组的维数,可以使用SetValue(Object, Int32[])重载来在运行时指定元素。参考链接:http://msdn.microsoft.com/en-us/library/758awxk7.aspx - Chris Sinclair
索引从哪里开始?人们会期望是0,但今天我遇到了一个带有.NET类型的数组的COM组件返回的值,但索引从1开始,而不是0。 - Peter Mortensen
@PeterMortensen,COM确实是一个令人害怕的地方。:) 但这是有趣的信息。 - Kirk Woll
@PeterMortensen,一维数组的下限可以使用Array.GetLowerBound(0)找到。对于多维数组,请将0替换为您感兴趣的任何维度。 - rjvdboon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接