Array.IndexOf:等于&相比于

时间:2009-08-28 11:54:13

标签: c# .net

在此MSDN article中,它表示

  

在.NET Framework 2.0版中,此方法使用数组的 Equals和CompareTo方法来确定value参数指定的Object是否存在。在.NET Framework的早期版本中,通过使用值 Object 本身的Equals和CompareTo方法进行此确定。

这究竟是什么意思?从我使用Reflector可以看出,Array.IndexOf仍然使用对象的equals方法来确定数组中对象的索引:

for (int j = startIndex; j < num3; j++)
{
    object obj2 = objArray[j];
    if ((obj2 != null) && obj2.Equals(value))
    {
        return j;
    }
}

是我的预期,但我对 MSDN备注感到困惑。

1 个答案:

答案 0 :(得分:3)

它的(非常)措辞不佳,但这意味着在1.1中,它搜索了arrayElement

value.Equals(arrayElement) == true

在2.0中,它用

搜索一个
arrayElement.Equals(value) == true

也就是说,来自1.1的等效反射代码是

for (int j = startIndex; j < num3; j++)
{
    object obj2 = objArray[j];
    if ((obj2 != null) && value.Equals(obj2))
    {
        return j;
    }
}