C#中,当调用CountLength个属性时,C#是否在内部跟踪集合更新时的计数?或者,它是否在每次调用这些属性时计算下划线元素?

我在试着了解下面两个代码中哪一个更好

if(collection.Count > 0)
{
    if(collection.Count > 5)
    {
       // more than 5
    } else if(collection.Count > 10 && collection.Count <= 15)
    {
       // more than 10
    } else {
       // more than 15
    }
}
else 
{
   // collection is empty
}

或者我应该这样做

var count = collection.Count;

if(count > 0)
{
    if(count > 5)
    {
       // more than 5
    } else if(count > 10 && count <= 15)
    {
       // more than 10
    } else {
       // more than 15
    }
} 
else 
{
   // collection is empty
}

推荐答案

微软声明:

检索该属性的值是一个O(1)操作.

这意味着IS将在内部跟踪它,而不会每次都迭代来查找计数.

不需要设置专用计数变量.

来源:https://docs.microsoft.com/en-us/dotnet/api/system.collections.objectmodel.collection-1.count?redirectedfrom=MSDN&view=net-6.0#remarks

Csharp相关问答推荐

C#将参数传递给具有变化引用的变量

Take()方法如何与IAsyncEnumerable一起使用

从依赖项容器在.NET 8中的Program.cs文件中添加IOC

在具有不同属性名称的两个类之间创建关系

WinForms在Linux上的JetBrains Rider中的应用

C#和ASP.NET核心标识:提高GetUserAsync调用的性能

C#-VS2022:全局使用和保存时的代码清理

CS1660无法将lambda表达式转换为类型INavigationBase,因为它不是委托类型

在使用Audit.NET的AuditTrail实现中,如何逐月将数据摄取到AzureTableStorage?

取决于您的数据量的多个嵌套循环

显示文档的ECDsa签名PDF在Adobe Reader中签名后已被更改或损坏

是否有必要在ASP.NET Core中注册可传递依赖项?

使用CollectionView时在.NET Maui中显示数据时出现问题

如何在.NET Maui中将事件与MVVM一起使用?

将C#类导入到PowerShell

如何在绑定到数据库的datagridview中向上或向下移动行

无效的Zip文件-Zip存档

如何使用LINQ在C#中填充列表列表?

为什么我不能在固定语句中使用外部函数?

无法创建工具窗口(用于VBIDE、VBA的COM加载项扩展)