gpt4 book ai didi

c# - 不安全的性能 C#,删除 long 转换为 int 以访问数组索引

转载 作者:太空狗 更新时间:2023-10-30 01:26:31 24 4
gpt4 key购买 nike

您好,我在 C# unsafe 中得到了以下代码,其中数组是固定的

array[(int)(index)]

index 很长(由于某些原因必须很长)..所以我需要将它转换为 int 以便访问数组元素。有没有一种方法可以在不安全的代码中使用指针或其他一些操作组合来防止这种转换,因为索引可以有 long 值 1(例如,并且永远不会超过 int 值 obv)..我觉得添加不安全指针可能会阻止它发生。我也觉得这个 Actor 不是免费的……表演是这里的问题。 (正是这一行)我也认为这是不可能的,但我问以防万一我弄错了。

好的,我会提供更多细节,我正在对 long preIndex 执行一些必需的逻辑操作,例如

value = array[(int)((preIndex & mask ) >> 10)]

这些操作是必需的,代码已经相当简约了。我发现唯一可以优化的是从 long 到 int 的转换,因为需要按位运算。

谢谢

最佳答案

unchecked 上下文(默认)中,强制转换只会丢弃不需要的 MSB,因此不会影响性能。在检查上下文中,如果索引范围超过 int.MaxValue,它将抛出异常。

关于c# - 不安全的性能 C#,删除 long 转换为 int 以访问数组索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4745609/

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