在此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备注感到困惑。
答案 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;
}
}