C#中List.Find 方法详解

类似于C++ 中的STL C#中也有List这样的数据结构方便开发者存储数据,我们常常会使用到sort,find等算法。
以find为例,在msdn给出的原型如下
    public T Find (
    Predicate<T> match
)

其中泛型T为list定义的时候用户决定的存储类型,Predicate match 是一个委托,可理解为函数指针,实质上被定义为
public delegate bool Predicate (T obj)
则开发者可以使用自己的函数作为find的条件,也可以简洁的使用一个匿名方法如

Stu find = sensorUpd.Find(delegate(Stu temp)
                {
                    return Stu .NO== NO;
                });

特别注意的是,对于find返回的值,如果找到,就会返回list中的被找到的对象的值,如果找不到,就会返回该种对象的默认值

如果对象为引用类型,对象的值为指向该对象的内存地址(可理解为指针),所以可以直接用那个返回值直接修改list内的元素,此时对象的默认值为null

如果对象为值类型 ,对象的值就是对象本身,返回值传回的是该对象的一个拷贝,对传回那个对象的修改不能影响list中的元素

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#List<T>.Find()方法用于在列表查找满足指定条件的元素,并返回第一个匹配的元素。这个方法接受一个Lambda表达式作为参数,该表达式定义了要搜索的条件。引用\[1\]和引用\[2\]提供了两个示例,分别演示了基础类型和引用类型的使用。 在引用\[1\],我们有一个基础类型的列表list1,其包含一些整数。我们使用Find()方法来查找值为15的元素,并将结果存储在变量l。最后,我们使用Debug.Log()方法将结果打印出来。 在引用\[2\],我们有一个引用类型的列表list1,其包含一些User对象。我们使用Find()方法来查找Name属性为"小Y"的元素,并将结果存储在变量l。然后,我们使用Debug.Log()方法打印出找到的元素的Age属性。 引用\[3\]提供了另一个示例,展示了如何使用Find()方法来查找满足指定条件的元素。在这个示例,我们有一个User对象的列表list,我们使用Find()方法来查找满足特定条件的元素。例如,我们可以使用c.email.StartsWith("ddd")来查找email属性以"ddd"开头的元素,使用c.firstname.Equals("李")来查找firstname属性等于"李"的元素,使用c.lastname.Equals("四")来查找lastname属性等于"四"的元素。 总之,C#List<T>.Find()方法是用于在列表查找满足指定条件的元素的方法,它可以根据不同的条件进行搜索。 #### 引用[.reference_title] - *1* *2* [【100个 Unity实用技能】| C#List.Find 方法详解 查找符合要求的第一个元素并返回](https://blog.csdn.net/zhangay1998/article/details/125521606)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [C# ListFind的使用方法](https://blog.csdn.net/liangzhuangdongtou/article/details/76512698)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值