gpt4 book ai didi

c# - 为什么 List 的 MoveNext() 实现使用 localList?

转载 作者:行者123 更新时间:2023-12-01 23:28:27 25 4
gpt4 key购买 nike

我阅读了 MoveNext() 的实现在 List<T> :

public bool MoveNext() {
List<T> localList = list;

if (version == localList._version && ((uint)index < (uint)localList._size))
{
current = localList._items[index];
index++;
return true;
}
return MoveNextRare();
}

将引用复制到 list 有什么意义?进入本地变量 localList

如果它们都指向同一个对象,为什么不能替换 localList 的所有实例?与 list

最佳答案

这可能是性能问题。访问局部变量比访问实例变量稍快。并且 - 因为 List 可能是 CLR 中最常用的类之一 - 具有良好的性能很重要。

局部变量可以直接从堆栈或寄存器中读取,而实例变量读取对象的地址,然后获取相对于该地址的值。

关于c# - 为什么 List<T> 的 MoveNext() 实现使用 localList?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66798333/

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