C# 数组 - FindIndex() 方法

C# 数组 FindIndex() 方法在找到与指定谓词定义的位置匹配的元素后,返回数组或其部分中首次出现的索引。

语法

以下是 C# 数组 FindIndex() 方法的语法 -

public static T? FindIndex<T> (T[] array, Predicate<T> match);
public static T? FindIndex<T> (T[], Int32, Predicate<T> match);

参数

此方法接受以下参数 -

  • array:用于搜索索引的一维零基数组。
  • match:定义要搜索元素条件的谓词。

返回值

如果找到与谓词匹配的索引,则此方法返回该索引;否则返回 -1。

示例 1:查找第一个偶数的索引

这是 FindIndex() 方法的基本示例,用于显示数组中偶数首次出现的索引 -

using System;
class Program {
   static void Main() {
      int[] Number = new int[] {1, 2, 3, 4, 5};
   
      // 查找第一个偶数的索引
      int evenN = Array.FindIndex(Number, num => num % 2 == 0);
   
      Console.WriteLine("Index of First Even number is: " + evenN);
   }
}

输出

以下是输出 -

Index of First Even number is: 1

示例 2:查找字符串的第一个索引

让我们创建一个示例,使用 FindIndex() 方法显示第一个以"c"开头的字符串的索引 -

using System;
class Program {
   static void Main() {
      string[] names = { "Dipak", "Rhaul", "Chhavi", "Charlie" };

      // 查找以"C"开头的索引名称
      int index_number = Array.FindIndex(names, name => name.StartsWith("C"));
      Console.WriteLine("Index of First name starting with 'C': " + index_number);
   }
}

输出

以下是输出 -

Index of First name starting with 'C': 2

示例 3:如果未找到匹配项会怎样

让我们看一下 FindIndex() 方法的另一个示例,以及它如何处理在数组中未找到索引的情况 -

using System;
class Program {
   static void Main() {
      int[] numbers = {1, 3, 5, 7};

      int index = Array.FindIndex(numbers, num => num % 2 == 0);
      Console.WriteLine("Index of first even number: " + index);
   }
}

输出

以下是输出 -

Index of first even number: -1

示例 4:查找符合条件的自定义对象的索引

在此示例中,我们创建一个自定义对象,该对象包含人员的姓名和年龄。我们使用 FindIndex() 函数显示第一个年龄大于 23 岁的人员的索引 -

using System;
class Person {
   public string Name {
      get;
      set;
   }
   public int Age {
      get;
      set;
   }
}
class Program {
   static void Main() {
      Person[] people = {
         new Person {
            Name = "Dipak", Age = 25
         },
         new Person {
            Name = "Karan", Age = 30
         },
         new Person {
            Name = "Pankaj", Age = 22
         }
      };

      // 查找第一个年龄大于 23 岁的人的索引
      int first_index = Array.FindIndex(people, person => person.Age > 23);

      Console.WriteLine("Index of First person older than 23: " + first_index);
   }
}

输出

以下是输出 -

Index of First person older than 23: 0

csharp_array_class.html