日期:2014-05-18  浏览次数:21014 次

关于Array.IndexOF()方法
IndexOf(Array, Object, Int32) 搜索指定的对象,并返回一维 Array 中从指定索引到最后一个元素这部分元素中第一个匹配项的索引。
  
  IndexOf(Array, Object, Int32, Int32) 搜索指定的对象,并返回一维 Array 中从指定索引开始包含指定个元素的这部分元素中第一个匹配项的索引。 

这是MSDN的解释,但是细心的朋友会发现,IndexOf()这个方法,居然可以从length处开始搜索,而一旦超过length就会报错,这是什么意思?印象中C#是不会在数组的最后加上"\0"的,那么,为什么length处就不会报错?

例:
  int[] a = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
  Console.WriteLine(Array.IndexOf(a, 10,10));
//这串代码并不会报错,但是会返回-1,也就是搜索不到

  int[] a = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
  Console.WriteLine(Array.IndexOf(a, 10,11));
//这串代码会提示,超出索引范围




------解决方案--------------------
没什么,只是.Net的一个bug而已,在Length处搜索是毫无意义的,