gpt4 book ai didi

c# - ArrayList 计数与任何

转载 作者:太空宇宙 更新时间:2023-11-03 17:51:48 25 4
gpt4 key购买 nike

我正在查看一些遗留代码。该类使用 ArrayList 来保存项目。这些项目是从数据库表中获取的,最多可达 600 万个。该类公开了一个名为“ListCount”的方法来获取 Arraylist 中项目的计数。

Class Settings
{
ArrayList settingsList ;
public Settings()
{
settingsList = GetSettings();//Get the settings from the DB. Can also return null
}

public int ListCount
{
get
{
if (settingsList == null )
return 0;
else
return settingsList.Count;
}
}
}
ListCount用于检查列表中是否有项目。我想介绍一下' Any ' 类的方法。
public bool Any(Func<vpSettings, bool> predicate)
{
return settingsList !=null && settingsList.Cast<vpSettings>().Any(predicate);
}

问题是框​​架是否进行了某种优化并维护项目的计数,或者它是否遍历 Arraylist 以获取计数?是否建议添加上面的“任何”方法。

以下问题中的 Marc Gravel 建议将 Any 用于 IEnumerable

Which method performs better: .Any() vs .Count() > 0?

最佳答案

.NET reference source表示 ArrayList.Count 返回一个缓存的私有(private)变量。

为了完整起见,the source这里还列出了 Any() 扩展方法的实现。本质上,扩展方法会进行空值检查,然后尝试通过 IEnumerable 的枚举器获取第一个元素。

关于c# - ArrayList 计数与任何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23376225/

25 4 0