隐藏

C# Find()和First()与FirstOrDefault(

发布:2019/8/1 8:47:01作者:管理员 来源:本站 浏览次数:992

1. Find方法只能在List<T>上使用,而后者能更广泛应用在IEnemerable<T>上。

Find最终是建立在Array的查找之上,而在IEnemerable上的FirstOrDefault是使用foreach查找的。因此,Find速度会比FirstOrDefault快很多,据测试可能会快一倍以上。

2. First:取序列中满足条件的第一个元素,如果没有元素满足条件,则抛出异常 
3. FirstOrDefault:取序列中满足条件的第一个元素,如果没有元素满足条件,则返回默认值(对于可以为null的对象,默认值为null,对于不能为null的对象,如int,默认值为0) 
First、FirstOrDefault的区别在于:当没有元素满足条件时,一个抛出异常,一个返回默认值。 
因此,在使用时,一定要注意这个区别: 
1、当确信序列中一定有满足条件的元素时,使用First方法,取到元素后,无需判断是否为null 
2、当序列中可能找不到满足条件的元素时,使用FirstOrDefault方法,然后,一定要对返回值是否为null,进行不同的处理