我遇到了一个奇怪的错误。使用以下代码,我已经设置了一个15个字符串的数组,等于“”。但是,当我稍后在代码中检查值时,第一个索引gridContents [0]等于“”而不是“”。我手动检查这个并设置gridContents [0] =“”;但是稍后再次检查它会显示它会恢复为“”。我将很快改变系统的工作方式,但我想知道这是一个已知的C#还是统一的东西,将空格转换为字符串数组中的空字符串。
数组只被初始化一次并且在搜索整个项目时,“”monodevelop的唯一位置可以找到我在第二个片段中检查它。任何帮助或信息将不胜感激。这里没有更大的上下文,我将15字符串设置为“”然后稍后检查每个字符串,由于某种原因,索引0随机出现变为“”。
String[] gridContents = new string[15];
for(int i = 0;i < 15;i++)
{
gridContents[i] = " ";
}
此处的第二个片段用于更正值,但稍后在代码中会以某种方式恢复。
for(int i = 0;i < gridContents.Length;i++)
{
if(gridContents[i].Equals(""))
{
Debug.Log("ERROR: empty string at index " + i);
gridContents[i] = " ";
}
}
- 修改
必须是统一/单声道的bug。如果我不使用“”作为默认/空白空间,则不会发生错误。唯一的“”单声道可以在整个项目中找到,我检查是否有任何值是“”,所以它不会在任何地方编辑。直到我用它来显示文本才会发生。代码基本上是,如果字符串是“”,那么显示一个空网格。如果不是,则在网格中显示白色方块。网格是3行5.我在整个地方都进行了检查,直到检查字符串是否为“”时,错误才会显示出来。
非常奇怪的错误,通过使用与“”不同的字符序列来修复,以表示空的网格空间。
- EDIT2
问题解决了。统一中的字符串(可能是因为monobehaviors)默认为空字符串而不是null。当我第一次运行程序时,我必须检查用户是否持有某些东西的一些代码尚未分配,因此变量是“”而不是null。因为“”不是“”,我的网格注册了一个空白项目。因此对于将来遇到此类问题的任何人来说......确保你的统一字符串都设置为某个值,如果它们应该为null,则为null。即便如此,检查它是因为统一中的空字符串打印“Null”哈哈。