gpt4 book ai didi

c# - 具有负索引的数组

转载 作者:太空狗 更新时间:2023-10-30 00:19:55 26 4
gpt4 key购买 nike

我有一个数组,用于存储我正在开发的游戏的 map 数据。

MyMapType[,,] map; 

我使用固定数组而不是 Collection 的原因是固定数组的工作速度要快得多。

现在我的问题是,我想在游戏中支持负 z 级别。所以我希望能够访问负索引。

如果这不可能,我想到了另外两个解决方案。

我在考虑将地平面设为某个任意数字(例如 10)的可能解决方案,任何小于 10 的值都可以视为负值。但是,如果不使用,这不会使数组大 10 倍吗?

我考虑的另一种解决方案是“自己滚动”,其中您有一个二维数组字典,列表中的 Z 级别作为索引。但这是更多的工作,我不确定它是否慢。

总结一下——有什么方法可以创建支持负索引的数组?如果没有 - 是否有一种干净的方法可以在不牺牲太多 CPU 时间或 RAM 的情况下“模拟”这种行为 - 请注意这些游戏 map 最终可能会变得很大并且需要不断访问。

最佳答案

用一个类替换你的数组:

class MyArray {
private MyMapType[] myArray = new myMapType[size]
MyMapType this[index] {
get{return myArray[index + offset];}
}

}

您可以在构造函数中设置大小和偏移量,甚至可以随意更改。

在此示例的基础上还有另一个版本:

class MyArray {
private MyMapType[] positives = new myMapType[size]
private MyMapType[] negatives = new myMapType[size-1]
MyMapType this[index] {
get{return index >= 0 ? positives[index] : negateves[1-index];}
}

}

这不会改变您需要为它们设置大小的事实。老实说,我更喜欢第一个

关于c# - 具有负索引的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15730346/

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