gpt4 book ai didi

c# - (uint) index >= (uint)_size 比 index >= _size 更好吗?

转载 作者:行者123 更新时间:2023-12-03 07:57:18 26 4
gpt4 key购买 nike

我深入了解了 List<T>并发现了以下代码:

public T this[int index] {
get {
// Following trick can reduce the range check by one
if ((uint) index >= (uint)_size) {
ThrowHelper.ThrowArgumentOutOfRangeException();
}
Contract.EndContractBlock();
return _items[index];
}

set {
if ((uint) index >= (uint)_size) {
ThrowHelper.ThrowArgumentOutOfRangeException();
}
Contract.EndContractBlock();
_items[index] = value;
_version++;
}
}

if 中声明,index_size (类型 Int32 )被转换为 UInt32我知道不是因为溢出,因为首先if有评论指出否则

问题: 除了溢出之外,将整数转换为无符号整数的概念是什么?在什么特定情况下它对开发人员有用?

最佳答案

重点是一步处理负数和正数。

如果将负数转换为 uint ,结果保证大于int.MaxValue 。因此任何负索引都会失败 (uint) index >= (uint)_size查看。如果移除石膏,则需要进行两项检查:index < 0 || index >= _size 。由于 Actor 阵容是“免费”的,这最终会稍微提高性能。

关于c# - (uint) index >= (uint)_size 比 index >= _size 更好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75724632/

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