【C#】List.Find
来源:互联网 发布:矩阵乘法 编辑:程序博客网 时间:2024/05/17 03:29
类似于C++ 中的STL C#中也有List这样的数据结构方便开发者存储数据,我们常常会使用到sort,find等算法。以find为例,在msdn给出的原型如下
- 1
- 2
- 3
- 4
其中泛型T为list定义的时候用户决定的存储类型,Predicate match 是一个委托,可理解为函数指针,实质上被定义为
public delegate bool Predicate (T obj)
则开发者可以使用自己的函数作为find的条件,也可以简洁的使用一个匿名方法如
- 1
- 2
- 3
- 4
特别注意的是,对于find返回的值,如果找到,就会返回list中的被找到的对象的值,如果找不到,就会返回该种对象的默认值。
如果对象为引用类型,对象的值为指向该对象的内存地址(可理解为指针),所以可以直接用那个返回值直接修改list内的元素,此时对象的默认值为null
如果对象为值类型 ,对象的值就是对象本身,返回值传回的是该对象的一个拷贝,对传回那个对象的修改不能影响list中的元素。
List.Find 方法:搜索与指定谓词所定义的条件相匹配的元素,并返回整个 List 中的第一个匹配元素。
Predicate是对方法的委托,如果传递给它的对象与委托中定义的条件匹配,则该方法返回 true。当前 List 的元素被逐个传递给Predicate委托,并在 List 中向前移动,从第一个元素开始,到最后一个元素结束。当找到匹配项时处理即停止。
public T Find(Predicate<T>match);
委托给一个函数:
1 string listFind1 = mList.Find(ListFind); //委托给ListFind函数 2 Console.WriteLine(listFind); //输出是Hunter 3 4 //ListFind函数: 5 public bool ListFind(string name) 6 { 7 if(name.Length > 3) 8 { 9 returntrue;10 }11 returnfalse;12 }
一些简单的例子
//定义一个List
List<
string
> ls =
new
List<
string
> {
"a"
,
"b"
,
"c"
,
"def"
};
//查找list中为b的这一项
var
item = ls.Find((x) => {
return
x ==
"b"
; });
List<
string
> list =
new
List<
string
> {
"a"
,
"b"
,
"c"
};
string
a = list.Find(o => o ==
"a"
);
//找a
string
b = list.Find(o => o.Equals(
"b"
));
//找b
转载地址:http://blog.csdn.net/qq_32884717/article/details/52094394
阅读全文
0 0
- 【C#】List.Find
- 【C#】List.Find
- [C#]List的Sort()、Find()、FindAll()、Exist()的使用方法举例
- List.Find()用法
- list find delegate用法
- List.find方法
- List::find、search
- C#/ASP.NET List中Sort()、Find()、FindAll()、Exist()的使用方法
- [C#/ASP.NET]List<>中Sort()、Find()、FindAll()、Exist()的使用方法
- 【转】[C#List的Sort()、Find()、FindAll()、Exist()的使用方法举例
- [C#/ASP.NET]List<>中Sort()、Find()、FindAll()、Exist()的使用方法
- List里find的使用。
- List<>中Find的用法
- list容器查找算法find(),
- 在list中查找find
- List-C
- C list
- codeforces C. Find Maximum
- css写提示框 ‘正在加载请。。。。。’
- 旧笔记本改造数码相框
- 详细的Webpack配置教程
- SpringMVC之一个Controller多个方法及静态文件访问实例
- svn仓库迁移简便方法(CentOS下为例)
- 【C#】List.Find
- hive启动报错解决Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
- Android编辑器--多功能输入框重构
- spring4.x注解概述
- Typora 我有我的优雅
- linux安装redis并开启redis扩展
- 关于javascript的int转String与String转int
- 配置Linux系统ssh免密码登陆
- SpringMVC学习之注解方式的配置及启用