首页 > 代码库 > List<T>Contains, Exists, Any之间的优缺点对比
List<T>Contains, Exists, Any之间的优缺点对比
在List<T>中,Contains, Exists, Any都可以实现判断元素是否存在。
性能方面:Contains 优于 Exists 优于 Any
测试的代码:
public static void Contains_Exists_Any_Test(int num) { List<int> list = new List<int>(); int N = num; for (int i = 0; i < N; i++) { list.Add(i); } System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch(); sw.Start(); Console.WriteLine(list.Contains(N)); sw.Stop(); Console.WriteLine("Contains:"+sw.Elapsed.ToString()); sw.Start(); Console.WriteLine(list.Exists(i => i == N)); sw.Stop(); Console.WriteLine("Exists:"+ sw.Elapsed.ToString()); sw.Start(); Console.WriteLine(list.Any(i => i == N)); sw.Stop(); Console.WriteLine("Any:"+ sw.Elapsed.ToString()); }
在开发过程中可以根据实际情况进行选择,当list中数据量不大时使用Exists代码更简洁易懂;数据量大时推荐使用Contains;不推荐使用Any
下面的代码对比就能看出为啥数据量不大的时候推荐Exists了。
class ITEM_GIDComparer : IEqualityComparer<T> { public bool Equals(T orl1, T orl2) { if (orl1==null) { return orl2 == null; } return orl1.ITEM_GID == orl2.ITEM_GID; } public int GetHashCode(T orl) { if (orl == null) return 0; return orl.ITEM_GID.GetHashCode(); } } orlclst.Contains(orlc, new ITEM_GIDComparer()) //Exists一行代码就可以实现上面的功能 orlclst.Exists(x=>x.ITEM_GID==orlc.ITEM_GID)
List<T>Contains, Exists, Any之间的优缺点对比
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。