gpt4 book ai didi

c# - 计数和容量有多快?

转载 作者:可可西里 更新时间:2023-11-01 08:30:40 25 4
gpt4 key购买 nike

我经常写这样的代码:

if ( list.Count > 0 ) { }

这样有效率吗?这个操作看起来像吗:

  • 遍历列表并计算其元素
  • 结果:986,000 个元素
  • 986,000 是否大于 0?
  • 返回真值

或者像这样:

  • 检索列表中存储的元素数 (986,000)
  • 986,000 是否大于 0?
  • 返回真值

也就是要获取列表中的元素个数,是要一路数遍列表,还是某处记录元素个数?所有 ICollection 类都是这种情况吗?

列表的容量怎么样?

最佳答案

I often write code like this: if ( list.Count > 0 ) { } Is this efficient?

是的。这会检索列表中的计数,该计数存储在列表内的一个字段中,并将其与零进行比较。

现在一个你没有问过的问题:

What about if ( sequence.Count() > 0 ) { } ? (Notice the parentheses on Count().)

我们在运行时查询序列,看它是否是一个具有可以高效计算的 Count 属性的列表。如果是这样,我们称之为。如果不是,我们一次计算整个序列一项,然后将其与零进行比较。

Isn't that incredibly inefficient?

是的。

What would be more efficient?

if (sequence.Any())

Why is that more efficient?

因为它试图遍历一个 元素。如果成功,则 Any 为真;如果失败则 Any 为 false。你不需要数 jar 里软心 bean 粒糖的数量就可以知道是否有超过零个。您只需查看是否至少有一个。

除了显着提高效率之外,代码现在读起来更像代码的预期含义。如果您打算问“列表中是否有任何项目?”然后问“列表中有任何项目吗?”而不是“列表中的项目数是否大于零?”

What about the Capacity property of a list?

这告诉您在列表的内部数据结构中预先分配了多少空间。它是列表在必须分配更多内存之前可以存储的项目数量。

关于c# - 计数和容量有多快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10142852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com