gpt4 book ai didi

c# - 为什么我的数组长度表达式只返回 1?

转载 作者:行者123 更新时间:2023-12-03 22:56:21 24 4
gpt4 key购买 nike

我正在 Unity 中开发一款游戏,刚刚注意到有时会出现一个奇怪的错误。发生的情况是,我正在实例化的字符串数组创建得太短,即使我正在编写的日志消息确认表达式应该创建一个更大的数组。

这是相关的代码片段:

Debug.Log("hero.power = " + hero.power.ToString());
Debug.Log("allyPower = " + allyPower.ToString());
Debug.Log("opponent.power = " + opponent.power.ToString());
int max = Mathf.Max(hero.power + allyPower, opponent.power);
report.flips[hero.name] = new string[hero.power + allyPower];
report.flips[opponent.name] = new string[opponent.power];
Debug.Log("max = " + max.ToString());
Debug.Log("report.flips[hero.name].Length = " + report.flips[hero.name].Length.ToString());

以及在 Unity 中创建的输出:

Sample Debug Log Output

这表明 hero.power3allyPower0,但不是创建 string[3] 它创建一个 string[1]

使用表达式来确定数组长度是否会导致问题?我暂时改成这样:

int heroArrayLength = hero.power + allyPower;
report.flips[hero.name] = new string[heroArrayLength];

它似乎有所帮助,尽管该错误之前不稳定,所以我不完全确定它已修复。即使是这样,我仍然不清楚真正的原因是什么。

有谁知道这里发生了什么吗?

最佳答案

如果hero.nameopponent.name相同,则:

report.flips[hero.name] = new string[hero.power + allyPower];
report.flips[opponent.name] = new string[opponent.power];

都将设置相同的“翻转”(无论“翻转”是什么),并且第二次“获胜”。由于 opponent.power1,因此最终数组的长度将为 1,这意味着 report.flips[hero.name ] 的长度为 1

关于c# - 为什么我的数组长度表达式只返回 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49749682/

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