📌  相关文章
📜  在C#中查找指定序列的第一个元素的索引(1)

📅  最后修改于: 2023-12-03 14:51:15.684000             🧑  作者: Mango

在C#中查找指定序列的第一个元素的索引

在C#中,可以通过许多方法来查找给定序列的第一个元素的索引。以下是一些常见的方法。

使用IndexOf函数

可以使用List类或数组的IndexOf函数来查找指定元素的索引。例如,以下代码查找整数数组中第一个偶数的索引:

int[] numbers = { 1, 3, 4, 7, 8 };
int firstEvenIndex = Array.IndexOf(numbers, numbers.FirstOrDefault(n => n % 2 == 0));
Console.WriteLine(firstEvenIndex);

输出:

2

这里使用了Linq的FirstOrDefault函数来查找第一个偶数并传递给IndexOf函数。

使用FindIndex函数

还可以使用List类的FindIndex函数来查找第一个满足特定条件的元素的索引。以下代码查找字符串列表中第一个以“S”开头的字符串的索引:

List<string> names = new List<string> { "Alice", "Bob", "Charlie", "Sasha" };
int firstSNameIndex = names.FindIndex(name => name.StartsWith("S"));
Console.WriteLine(firstSNameIndex);

输出:

3
使用自定义函数

还可以编写自己的函数来查找指定条件的元素的索引。例如,以下代码查找字符串数组中第一个包含特定子字符串的索引:

string[] strings = { "apple", "banana", "cherry", "date" };
int firstIndex = FindIndex(strings, s => s.Contains("an"));
Console.WriteLine(firstIndex);

public static int FindIndex<T>(T[] array, Func<T, bool> predicate)
{
    for (int i = 0; i < array.Length; i++)
    {
        if (predicate(array[i]))
        {
            return i;
        }
    }

    return -1;
}

输出:

1

这里定义了一个名为FindIndex的静态函数,通过遍历数组并应用给定的谓词来查找第一个满足条件的元素的索引。

以上是在C#中查找指定序列的第一个元素的索引的一些常见方法。尽管有很多其他方法,但这些应该能够满足大多数需求。