System.Array.LastIndexOf 方法 (Array, Object, Int32, Int32)

方法描述

搜索指定的对象,并返回一维 Array 中到指定索引为止包含指定个元素的这部分元素中最后一个匹配项的索引。

语法定义(C# System.Array.LastIndexOf 方法 (Array, Object, Int32, Int32) 的用法)

public static int LastIndexOf(
	Array array,
	Object value,
	int startIndex,
	int count
)

参数/返回值

参数值/返回值 参数类型/返回类型 参数描述/返回描述
array System-Array 要搜索的一维 Array。
value System-Object 要在 array 中查找的对象。
startIndex System-Int32 向后搜索的起始索引。
count System-Int32 要搜索的部分中的元素数。
返回值 System.Int32 如果在 array 中到 startIndex 为止并且包含的元素个数为在 count 中指定的个数的这部分元素中找到 value 的匹配项,则为最后一个匹配项的索引;否则为该数组的下限减 1。

提示和注释

如果 count 大于 0,则向后搜索 Array,从 startIndex 开始,到 startIndex - count + 1 结束。

使用 Object.Equals 方法,将元素与指定的值进行比较。 如果元素类型是非内部(用户定义)类型,则使用该类型的 Equals 实现。

由于大多数数组以零作为下限,在找不到 value 时,此方法通常将返回 -1。 在极少数情况下,数组的下限等于 Int32.MinValue,且找不到 value,这时此方法返回 Int32.MaxValue,即 System.Int32.MinValue - 1。

此方法的运算复杂度为 O(n),其中 n 是 count。

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

System.Array.LastIndexOf 方法 (Array, Object, Int32, Int32)例子

请注意,LastIndexOf 方法向后搜索;因此,count 必须小于或等于(startIndex - 数组的下限 + 1)。

using System;
public class SamplesArray  {

   public static void Main()  {

      // Creates and initializes a new Array with three elements of the same value.
      Array myArray=Array.CreateInstance( typeof(String), 12 );
      myArray.SetValue( "the", 0 );
      myArray.SetValue( "quick", 1 );
      myArray.SetValue( "brown", 2 );
      myArray.SetValue( "fox", 3 );
      myArray.SetValue( "jumps", 4 );
      myArray.SetValue( "over", 5 );
      myArray.SetValue( "the", 6 );
      myArray.SetValue( "lazy", 7 );
      myArray.SetValue( "dog", 8 );
      myArray.SetValue( "in", 9 );
      myArray.SetValue( "the", 10 );
      myArray.SetValue( "barn", 11 );

      // Displays the values of the Array.
      Console.WriteLine( "The Array contains the following values:" );
      PrintIndexAndValues( myArray );

      // Searches for the last occurrence of the duplicated value.
      String myString = "the";
      int myIndex = Array.LastIndexOf( myArray, myString );
      Console.WriteLine( "The last occurrence of \"{0}\" is at index {1}.", myString, myIndex );

      // Searches for the last occurrence of the duplicated value in the first section of the Array.
      myIndex = Array.LastIndexOf( myArray, myString, 8 );
      Console.WriteLine( "The last occurrence of \"{0}\" between the start and index 8 is at index {1}.", myString, myIndex );

      // Searches for the last occurrence of the duplicated value in a section of the Array.
      // Note that the start index is greater than the end index because the search is done backward.
      myIndex = Array.LastIndexOf( myArray, myString, 10, 6 );
      Console.WriteLine( "The last occurrence of \"{0}\" between index 5 and index 10 is at index {1}.", myString, myIndex );
   }


   public static void PrintIndexAndValues( Array myArray )  {
      for ( int i = myArray.GetLowerBound(0); i <= myArray.GetUpperBound(0); i++ )
         Console.WriteLine( "\t[{0}]:\t{1}", i, myArray.GetValue( i ) );
   }
}
/* 
This code produces the following output.

The Array contains the following values:
    [0]:    the
    [1]:    quick
    [2]:    brown
    [3]:    fox
    [4]:    jumps
    [5]:    over
    [6]:    the
    [7]:    lazy
    [8]:    dog
    [9]:    in
    [10]:    the
    [11]:    barn
The last occurrence of "the" is at index 10.
The last occurrence of "the" between the start and index 8 is at index 6.
The last occurrence of "the" between index 5 and index 10 is at index 10.
*/

异常

异常 异常描述
ArgumentNullException array 为 null。
ArgumentOutOfRangeException
  • startIndex 超出了 array 的有效索引范围。
  • count 小于零。
  • startIndex 和 count 指定的不是 array 中的有效部分。
RankException array 是多维的。

命名空间

namespace: System

程序集: mscorlib(在 mscorlib.dll 中)

版本信息

.NET Framework 受以下版本支持:4、3.5、3.0、2.0、1.1、1.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1

适用平台

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。