📅  最后修改于: 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>
中查找指定对象的索引,可以使用 IndexOf
或 IndexOf<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>.IndexOf
或 IEnumerable<T>.IndexOf
方法。如果要使用 IEnumerable<T>.IndexOf<T>
方法,则需要传递一个 IEqualityComparer<T>
对象作为参数。