C# List<T>.IndexOf()方法的使用

C#中的List<T>.IndexOf()方法用于查找指定元素在列表中的索引位置。它返回第一个匹配项的索引,如果未找到匹配项,则返回-1。

语法:有三种参数可选

int List<T>.IndexOf(T item);

int List<T>.IndexOf(T item, int start_index);

int List<T>.IndexOf(T item, int start_index, int count);

第一个参数item是要搜索的元素

第二个参数start_index是搜索的起始索引位置。

第三个参数count是从"start_index"开始搜索的元素总数。

下面举例说明使用情况:

1、通过1个参数搜索:

cs 复制代码
// 定义一个包含整数的列表
List<int> numbers = new List<int> { 10, 20, 30, 20, 50 ,15};

// 使用IndexOf方法查找元素的索引位置
int index1 = numbers.IndexOf(20);
int index2 = numbers.IndexOf(60);

// 输出结果
Console.WriteLine("元素20的索引位置是:" + index1);
Console.WriteLine("元素60的索引位置是:" + index2);

在上面的示例中,我们先定义一个包含整数的列表numbers。然后,我们就用IndexOf()方法查找元素20,60在列表中的索引位置,并将结果存储在变量index中。最后,我们将结果打印出来。

输出结果将是:

cs 复制代码
元素20的索引位置是:1
元素60的索引位置是:-1

2、通过2个参数搜索:

cs 复制代码
// 定义一个包含整数的列表
List<int> numbers = new List<int> { 10, 20, 30, 20, 50 ,15};

// 使用IndexOf方法从某个索引值开始查找元素的索引位置
int index1 = numbers.IndexOf(20,1);
int index2 = numbers.IndexOf(20,2);
int index3 = numbers.IndexOf(20,4);

// 输出结果
Console.WriteLine("元素20的索引位置是:" + index1);
Console.WriteLine("元素20的索引位置是:" + index2);
Console.WriteLine("元素20的索引位置是:" + index3);

输出结果是:

cs 复制代码
元素20的索引位置是:1
元素20的索引位置是:3
元素20的索引位置是:-1

3、通过3个参数搜索:

cs 复制代码
// 定义一个包含整数的列表
List<int> numbers = new List<int> { 10, 20, 30, 20, 50 ,15};

// 使用IndexOf方法从某个索引值开始查找n个位置元素的索引位置
int index1 = numbers.IndexOf(20,1,3);
int index2 = numbers.IndexOf(20,2,1);


// 输出结果
Console.WriteLine("元素20的索引位置是:" + index1);
Console.WriteLine("元素20的索引位置是:" + index2);

输出结果是:

cs 复制代码
元素20的索引位置是:1
元素20的索引位置是:-1

除了基本的使用方法,还有其它几种使用方法:

1、自定义比较器:IndexOf()方法还可以接受一个IEqualityComparer<T>类型的参数,用于自定义比较器。这样可以在搜索元素时使用自定义的比较逻辑。例如:

cs 复制代码
List<string> fruits = new List<string> { "apple", "banana", "orange", "Apple" };
int index = fruits.IndexOf("apple", StringComparer.OrdinalIgnoreCase);
Console.WriteLine("元素apple的索引位置是:" + index);

输出结果是:

cs 复制代码
元素apple的索引位置是:0

在上面的示例中,使用了StringComparer.OrdinalIgnoreCase作为比较器,即忽略大小写进行搜索。

2、LastIndexOf()方法:假如搜索最后一个匹配的索引,那么就可以使用该方法。事实它是直接从列表中最后一个往回搜索匹配第一个匹配索引。

cs 复制代码
List<int> numbers = new List<int> { 10, 20, 30, 40, 20, 50 };
int index = numbers.LastIndexOf(20);
Console.WriteLine("最后一个元素20的索引位置是:" + index);

输出结果是:

cs 复制代码
最后一个元素20的索引位置是:4
相关推荐
灯澜忆梦8 小时前
GO_并发编程---定时器
开发语言·后端·golang
-银雾鸢尾-8 小时前
C#中的StringBuilder相关方法
开发语言·c#
-银雾鸢尾-9 小时前
C#中结构体与类的区别;抽象类与接口的区别
开发语言·c#
大模型码小白10 小时前
【Python零基础教程】继承、多态与魔法函数:面向对象编程三大核心特性详解
java·大数据·开发语言·人工智能·python·ai编程
段一凡-华北理工大学11 小时前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
Ljwuhe12 小时前
C++——多态
开发语言·c++
心平气和量大福大12 小时前
C#-WPF-Window主窗体
开发语言·c#·wpf
白露与泡影13 小时前
Arthas 实战指南:从方法耗时定位到 JVM 变量热修改
服务器·jvm·c#
从零开始的代码生活_14 小时前
C++ 继承详解:访问控制、对象模型、菱形继承与设计取舍
开发语言·c++·后端·学习·算法
云小逸14 小时前
【C++ 第七阶段:模板、泛型编程与工程综合详解】
开发语言·c++