首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【100个 Unity实用技能】| C#中List.Find 方法详解 查找符合要求的第一个元素并返回

---- Unity 实用小技能学习 C#中List.Find 方法详解 查找符合要求的第一个元素并返回 前面有篇文章介绍了List通过Exists来判断是否存在这个对象,返回一个布尔值。...public T Find(PredicateT> match); 泛型T为list定义的时候用户决定的存储类型,Predicate match 是一个委托,可理解为函数指针。..., 19, 20 }; var l = list1.Find(t => t == 15); Debug.Log("返回的值:"+l); 引用类型 //引用类型....Find(t => t.Name == "小Y"); Debug.Log("Age:" + l.Age); } 返回结果如下: 注意点: Find返回的值,如果找到,会返回...List中的被找到的对象的值,如果找不到,就会返回该种对象的默认值。

2.2K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【100个 Unity实用技能】☀️ | C#泛型集合常用方法,查找符合要求的第一个元素并返回

    个 Unity实用技能】| C#中List.Find 方法详解 查找符合要求的第一个元素并返回 最近发现还有几种其他方法,不止针对List,对C#中的集合都可以使用。...几种方法如下: 1、list.Find(t => t == 666); 不会遍历所有记录,它只需遇到指定的 predicate 满足后即可返回。...取序列中满足条件的第一个元素,但是只能在List上使用。 2、list.FirstOrDefault(t => t == 666); 会遍历所有的记录然后再返回结果。...3、list.Where(t => t == 666).ToList().FirstOrDefault(); 不如list.FirstOrDefault()的性能好, 类似的方法还有 list.First...在常用的方法中根据实际情况才用上面几种方法即可。 因为Find方法不会遍历所有记录,找到第一个后立刻返回,但缺点是只能在List中使用。

    87020

    【Groovy】集合遍历 ( 使用集合的 find 方法查找集合元素 | 闭包中使用 == 作为查找匹配条件 | 闭包中使用 is 作为查找匹配条件 | 闭包使用 true 作为条件 | 代码示例 )

    Example: * def list = [1,2,3] * assert 2 == list.find { it > 1...,按照集合迭代器的顺序,如果没有匹配的元素,则为null * @since 1.0 */ public static T> T find(CollectionT> self...闭包中使用 == 作为查找匹配条件 def findElementResult = list.find{ // 查找集合中值为 "1" 的元素...闭包中使用 true 作为条件 , 返回第一个不为空的元素 findElementResult = list.find{ // 返回第一个不为空的元素...闭包中使用 true 作为条件 , 返回第一个不为空的元素 findElementResult = list.find{ // 返回第一个不为空的元素

    1.6K10

    C# Find vs FirstOrDefault

    对于 List 等都是继承可枚举Enumerable这时获取第一个元素可以使用FirstOrDefault。如果使用Find那么需要数组的类型是IList。...下面写一个简单的例子 反编译 Find 可以看到下面代码,下面的代码删了一些代码,让大家比较容易看到 Find 使用的是 for 然后使用判断 private T[] _items; public T...Find(PredicateT> match) { for (int index = 0; index < this....return default (TSource); } 所以在对于 List 类型的获得第一个或默认请使用 Find ,其他的请使用FirstOrDefault 对于 List ,使用 for 的速度是...foreach 的两倍 遍历 array 的速度是遍历 List 的两倍 使用 for 遍历 array 的速度是使用 foreach 遍历 List 的5倍 参见:https://stackoverflow.com

    88010

    详解Jpa动态复杂条件查询,查询指定字段、并包括sum、count、avg等数学运算

    、criteriaBuilder都是些什么鬼,怎么组建的Predicate,新手一看,比较茫然。...解析原生的底层查询 事实上,要完成一次条件查询,它的流程是这样的: public List findResult(EntityManager entityManager, ClassT>...这几个都是构建Predicate的。 至于用来做having,groupBy的更简单,直接用root.get("字段名")就可以了。...里面的root,CriteriaQuery和builder都已经被Jpa赋值好了,我们只需要关注Predicate的构建,也就是说,这个findAll方法只能完成where条件的构建,而不能实现select...需注意,该封装,是针对于单表用的,并没有对多表联合查询做封装,因为我从来只有单表操作,从不做任何外键以及多表级联查询。

    21.7K94

    详解Jpa动态复杂条件查询,查询指定字段、并包括sum、count、avg等数学运算,包括groupBy分组

    、criteriaBuilder都是些什么鬼,怎么组建的Predicate,新手一看,比较茫然。...解析原生的底层查询 事实上,要完成一次条件查询,它的流程是这样的: public List findResult(EntityManager entityManager, ClassT>...这几个都是构建Predicate的。 至于用来做having,groupBy的更简单,直接用root.get("字段名")就可以了。...里面的root,CriteriaQuery和builder都已经被Jpa赋值好了,我们只需要关注Predicate的构建,也就是说,这个findAll方法只能完成where条件的构建,而不能实现select...需注意,该封装,是针对于单表用的,并没有对多表联合查询做封装,因为我从来只有单表操作,从不做任何外键以及多表级联查询。

    5K20

    由表单验证说起,关于在C#中尝试链式编程的实践

    在web开发中必不可少的会遇到表单验证的问题,为避免数据在写入到数据库时出现异常,一般比较安全的做法是前端会先做一次验证,通过后把数据提交到后端再验证一次,因为仅仅靠前端验证是不安全的,有太多的http...请求工具可以轻松绕过你的前端验证把危险数据提交到后端,所以,之前不做后端参数验证的同学赶快检查一下你的代码~别中招了 那么,故事就是有关于后端验证。...先定义一个被扩展的对象: public class ValidateResultT> { public List Errors { get; set; }...Errors = new List(); Entity = entity; } } 定义扩展方法: public static ValidateResult...不喜欢的还请轻点拍砖。 当然,关于这个问题有更好解决方案的希望能交流一下。

    1.2K30

    C# Find vs FirstOrDefault

    对于 List 等都是继承可枚举Enumerable这时获取第一个元素可以使用FirstOrDefault。如果使用Find那么需要数组的类型是IList。...下面写一个简单的例子 反编译 Find 可以看到下面代码,下面的代码删了一些代码,让大家比较容易看到 Find 使用的是 for 然后使用判断 private T[] _items; public T...Find(PredicateT> match) { for (int index = 0; index < this....return default (TSource); } 所以在对于 List 类型的获得第一个或默认请使用 Find ,其他的请使用FirstOrDefault 对于 List ,使用 for 的速度是...foreach 的两倍 遍历 array 的速度是遍历 List 的两倍 使用 for 遍历 array 的速度是使用 foreach 遍历 List 的5倍 参见:https://stackoverflow.com

    52510

    【Kotlin】Kotlin 语言集合中的高阶函数详解 ( 数据类 data class | maxBy | minBy | filter | map | any | count | find )

    > Boolean): ListT> ① 函数调用者 : filter 函数是被 IterableT> 对象调用的 , 该对象是一个集合 ; ② 函数的参数 : predicate: (T) ->...Boolean 是函数参数 ; ③ 函数返回值 : 返回值是 List 类型 , 是一个 泛型为 T 类型的 List 集合 ; 3 . filter 参数解析 : predicate: (T) ->...) } 2 . map 函数的几个要素 : IterableT>.map(transform: (T) -> R): List ① 函数调用者 : map 函数是被 IterableT> 对象调用的...: IterableT>.any(predicate: (T) -> Boolean): Boolean ① 函数调用者 : any 函数是被 IterableT> 对象调用的 , 该对象是一个集合...① 函数调用者 : find 函数是被 IterableT> 对象调用的 , 该对象是一个集合 ; ② 函数的参数 : predicate: (T) -> Boolean 是函数参数 ; ③ 函数返回值

    1.2K10

    为什么有了IndexOf,还要有FindIndex​?

    【摘要】对于IndexOf(),相信大家都是很熟悉的,但是,昨天我们提供的List用法中还有一个FindIndex(),看起来功能描述与IndexOf()是一样的啊,可是,这真的有必要吗?...是啊,为什么啊?这两个方法对比,孰优孰劣呢?..., PredicateT> match); public int FindIndex(int startIndex, int count, PredicateT> match); //IndexOf...对呀,既然使用起来,功能和返回值是一样的,有必要定义两套东西吗? 答案挺有意思:这样做是有历史原因的。 因为在C#1.0中,只有IndexOf()。...就如有的网友说的不能因为有了新的,就不支持旧的,不然就不叫升级只能叫更新了。所以,如此这般,看似重复的功能就这样被保留了下来。

    1K20

    JDK1.9-Stream流

    循环遍历的弊端 Java 8的Lambda让我们可以更加专注于做什么(What),而不是怎么做(How),这点此前已经结合内部类进行 了对比说明。...现在,我们仔细体会一下上例代码,可以发现: for循环的语法就是“怎么做” for循环的循环体才是“做什么” 为什么使用循环?因为要进行遍历。但循环是遍历的唯一方式吗?...直接阅读代码的字面意思即可完美展示无关逻辑方式的语义:获取流、过滤姓张、过滤长度为3、逐一打印。代码 中并没有体现使用线性循环或是其他任何算法进行遍历,我们真正要做的事情内容被更好地体现在代码中。...这些方法可以被分成两种: 延迟方法:返回值类型仍然是 Stream 接口自身类型的方法,因此支持链式调用。(除了终结方法外,其余方 法均为延迟方法。)...复习Predicate接口 此前我们已经学习过 java.util.stream.Predicate 函数式接口,其中唯一的抽象方法为: boolean test(T t); 该方法将会产生一个boolean

    1.6K20

    编写高质量代码改善C#程序的157个建议

    使用default为泛型类型指定初始值   有些算法,比如泛型集合ListT>的Find算法,所查找的对象有可能会是值类型,也有可能是引用类型。...t; } 这样如果它在运行时碰到的T是一个整型,那么运行时会为其赋值0;如果T在运行时是一个Person这样的引用类型,则会为其赋null值。...这里是之前一篇关于Action、Func、Predicate的有关介绍http://www.cnblogs.com/aehyok/p/3382291.html 除了Action、Func、Predicate...从上面的写法中也可以看出:Add方法和Print方法实际上都只有一条语句,因此,使用匿名方法也许是一种更好的选择: 第三个版本 static void Main(string[]...——这个相机是我私人使用的。 8、What are these?——这些东西是做何用? 9、You'll have to pay duty on this.——你必须为这项物品缴付税金。

    46150

    Kotlin之“AbstractMutableList”

    ,该接口不提供管理容量大小的方法,像js中的array一样自动改变大小 AbstractList 定义了一般List的方法结构,也就是说所有的List都必须有的方法,比如需要实现一个容量不可变的数组,...而是用转换成的K来做去重 fun T, K> IterableT>.distinctBy( selector: (T) -> K ): ListT> drop //去掉前几个元素,如果参数...T>> IterableT>.filterTo( destination: C, predicate: (T) -> Boolean ): C find(注意和filter的区分...) //查找第一个与判断条件相符的元素,如果没有则返回null //内部直接调用的firstOrNull方法,下面会介绍这个方法 fun T> IterableT>.find(predicate:...,并组成Pair对象,第一个List是符合断言的所有元素,第二个是剩下的 fun T> IterableT>.partition( predicate: (T) -> Boolean ):

    1.1K20
    领券