📌  相关文章
📜  C#|在集合中搜索指定对象的索引<T>(1)

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

在集合中搜索指定对象的索引

在C#中,我们可以使用 List<T>IEnumerable<T> 等集合来存储数据,并且经常需要在其中进行查找操作。本文将会介绍如何在集合中搜索指定对象的索引。

使用 List<T> 进行搜索

List<T> 中查找指定对象的索引,可以使用 IndexOf 方法。该方法接受一个泛型参数,并返回该元素在列表中的索引,如果该元素不存在,则返回 -1。

List<string> list = new List<string>() { "apple", "banana", "orange" };
int index = list.IndexOf("banana");
Console.WriteLine(index); // 输出 1
使用 IEnumerable<T> 进行搜索

IEnumerable<T> 中查找指定对象的索引,可以使用 IndexOfIndexOf<T> 扩展方法。这两种方法的用法类似,都接受一个泛型参数,并返回该元素在集合中的索引,如果该元素不存在,则返回 -1。

下面是 IndexOf 方法的使用示例:

IEnumerable<string> list = new List<string>() { "apple", "banana", "orange" };
int index = list.IndexOf("banana");
Console.WriteLine(index); // 输出 1

IndexOf<T> 方法的用法类似,只是需要传递一个 IEqualityComparer<T> 对象作为参数,用于比较集合中的元素和指定的元素是否相等。

下面是 IndexOf<T> 方法的使用示例:

class FruitComparer : IEqualityComparer<string>
{
    public bool Equals(string x, string y)
    {
        return x.ToLower() == y.ToLower();
    }

    public int GetHashCode(string obj)
    {
        return obj.ToLower().GetHashCode();
    }
}

IEnumerable<string> list = new List<string>() { "Apple", "Banana", "Orange" };
int index = list.IndexOf("banana", new FruitComparer());
Console.WriteLine(index); // 输出 1
总结

在集合中搜索指定对象的索引,可以使用 List<T>.IndexOfIEnumerable<T>.IndexOf 方法。如果要使用 IEnumerable<T>.IndexOf<T> 方法,则需要传递一个 IEqualityComparer<T> 对象作为参数。