提问人:robin bosch 提问时间:4/12/2022 最后编辑:Lee Taylorrobin bosch 更新时间:4/12/2022 访问量:27
将引用类型的值传递给 Dictionary.Add 方法
Pass value of reference type to Dictionary.Add method
问:
所以我有一个相当大的 2D 锯齿状数组,我想把它分成更小的数组。之后,我想将那些较小的 2D 锯齿状数组存储在字典中。
为此,我使用 .在 Dictionary 上添加方法。所以现在我添加了较小的数组,但我只将存储较小数组的变量的引用添加到方法中,或者至少这是我在盯着屏幕、调试和 3 次精神崩溃 4 小时后得出的结论。Dictionary.Add
因此,如果我为较小的数组更改变量,我这样做显然是因为我想将其分成多文件片段,我最终也会更改我存储在 Dictionary 中的值,并且我最终会得到一个始终存储相同值的 Dictionary。
我也没有发现这个错误,因为在我更改代码之前,我为较小的数组运行了我的变量,抛出了另一个函数,或者至少我认为我这样做了。但出于某种原因,我无法复制这一点。那么,最好的方法是什么,将一个值而不是一个引用类型传递给我的Dictionary.Add方法呢?我发现了 ref 关键字,但没有发现对应部分。
我的代码:
(currentChunkArray 是我用于较小数组的数组) (ChunkData.FalloffMaps是我的字典)
float[][] currentChunkArray = new float[ChunkData.verticies + 2 * border][];
for (int i = 0; i < ChunkData.verticies + 2 * border; i++)
{
currentChunkArray[i] = new float[ChunkData.verticies + 2 * border];
}
for (int y = 0; y < ChunkData.islandSize; y++)
{
for (int x = 0; x < ChunkData.islandSize; x++)
{
for (int i = 0 ; i < ChunkData.verticies + 2 * border; i++)
{
float[] sourceArray = borderedIslandMap[i + y * ChunkData.verticies - y];
int sourceIndex = x * ChunkData.verticies - x;
float[] destinationArray = currentChunkArray[i];
int destinationIndex = 0;
int length = ChunkData.verticies + 2 * border;
Array.Copy(sourceArray, sourceIndex, destinationArray, destinationIndex, length);
}
ChunkData.FalloffMaps.Add(new Vector2(y, x), currentChunkArray);
答: 暂无答案
评论