当前位置: 首页 > news >正文

【C#】IndexOf的使用

1. 在ObservableCollection<T> 类中使用:

ObservableCollection<T> 类是 C# 中的一个集合类,它继承自 Collection<T> 并实现了 INotifyCollectionChanged 接口,使得集合的更改可以自动通知给任何监听它的界面元素。这使得它在WPF、UWP或其它XAML技术中特别有用,用于数据绑定。

IndexOf 方法是一个从 List<T> 继承而来的方法,在 ObservableCollection<T> 中也可用。这个方法用于查找指定对象在集合中的索引位置。如果对象在集合中存在,它将返回该对象的第一个匹配项的索引;如果不存在,则返回 -1。

using System;
using System.Collections.ObjectModel;class Program
{static void Main(){// 创建一个 ObservableCollection 对象,泛型参数为 objectObservableCollection<object> items = new ObservableCollection<object>();// 向集合中添加一些对象items.Add("Apple");items.Add("Banana");items.Add("Cherry");// 使用 IndexOf 查找 "Banana" 在集合中的索引int index = items.IndexOf("Banana");if (index != -1){Console.WriteLine($"'Banana' 的索引位置是: {index}");}else{Console.WriteLine("'Banana' 不在集合中。");}// 尝试查找一个不在集合中的对象index = items.IndexOf("Orange");Console.WriteLine(index != -1 ? $"'Orange' 的索引位置是: {index}" : "'Orange' 不在集合中。");}
}

2. 在字符串(String)中使用:

在字符串中,IndexOf 方法用于查找指定字符或子字符串首次出现的位置。

string str = "Hello, world!";
int index = str.IndexOf("world");
// 输出: 7,因为 "world" 开始于索引 7
Console.WriteLine(index);

3. 在数组(Array)中使用:

对于数组,你可以使用 Array.IndexOf 静态方法来查找元素的索引。

int[] numbers = { 1, 2, 3, 4, 5 };
int index = Array.IndexOf(numbers, 3);
// 输出: 2,因为 3 是数组中的第二个元素
Console.WriteLine(index);

4. 在 C# 的 List 中使用:

ObservableCollection<T> 类似,List<T> 也提供了 IndexOf 方法来查找元素的索引。

List<int> list = new List<int> { 10, 20, 30, 40 };
int index = list.IndexOf(30);
// 输出: 2,因为 30 是列表中的第三个元素
Console.WriteLine(index);

5. 在 LINQ 查询中间接使用:

虽然 LINQ 没有直接提供 IndexOf 方法,但可以通过 Enumerable.IndexOf 方法或 ElementAt 结合条件判断来间接实现类似功能。

6. 在字符串中使用更复杂搜索(如忽略大小写):

String.IndexOf 还有重载方法,可以让你在搜索时忽略大小写等。

string text = "Hello World";
int indexIgnoreCase = text.IndexOf("world", StringComparison.OrdinalIgnoreCase);
// 输出: 6,即使"W"小写也能找到
Console.WriteLine(indexIgnoreCase);

总的来说,IndexOf 是一个非常实用的方法,用于确定一个元素或子串在集合、字符串或数组中的起始位置,广泛应用于各种数据检索和处理场景。

 

相关文章:

  • PCIe学习——重点提纲
  • Flutter开发效率提升1000%,Flutter Quick教程之定义Api(三)
  • 24.钩子注入的注意事项
  • 年薪80w的AI产品经理技术知识合集
  • Windows 10 找不到Microsoft Edge 浏览器
  • 【Vue】构建vuex-cart模块
  • 【SpringBoot + Vue 尚庭公寓实战】租期管理接口实现(四)
  • 重点关注!2024年影响因子即将发布!
  • ElementUI之表格组件
  • 专属部署的优势和企业价值
  • 优化家庭网络,路由器无线中继配置全攻略(中兴E1600无线中继设置/如何解决没有预埋有线网络接口的问题/使用闲置路由实现WIFI扩展)
  • 数据仓库之拉链表
  • 人工智能在【多模态:多组学+复发转移+肿瘤起源】的最新研究进展|顶刊速递·2024-06-11
  • 家庭服务机器人和智能家居有什么区别
  • CMD win+r 管理员运行cmd
  • 【Linux系统编程】快速查找errno错误码信息
  • 2018一半小结一波
  • Centos6.8 使用rpm安装mysql5.7
  • css布局,左右固定中间自适应实现
  • laravel with 查询列表限制条数
  • Linux CTF 逆向入门
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • React-Native - 收藏集 - 掘金
  • SQLServer之索引简介
  • Twitter赢在开放,三年创造奇迹
  • vue 配置sass、scss全局变量
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 聊聊sentinel的DegradeSlot
  • 设计模式(12)迭代器模式(讲解+应用)
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 问题之ssh中Host key verification failed的解决
  • 《码出高效》学习笔记与书中错误记录
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • 阿里云移动端播放器高级功能介绍
  • 函数计算新功能-----支持C#函数
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • # Maven错误Error executing Maven
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (Windows环境)FFMPEG编译,包含编译x264以及x265
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (二)linux使用docker容器运行mysql
  • (六)Flink 窗口计算
  • (三)elasticsearch 源码之启动流程分析
  • (十六)Flask之蓝图
  • (五)Python 垃圾回收机制
  • (转) Face-Resources
  • (转)大型网站架构演变和知识体系
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • ***利用Ms05002溢出找“肉鸡
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'