C# 索引为0的唯一(unity)c字符串数组错误

C# 索引为0的唯一(unity)c字符串数组错误,c#,arrays,string,indexing,unity3d,C#,Arrays,String,Indexing,Unity3d,我遇到一只奇怪的虫子。在下面的代码中,我设置了一个15个字符串的数组,使其等于。但是,当我稍后在代码中检查这些值时,第一个索引gridContents[0]等于而不是。我手动检查并设置gridContents[0]=;但稍后再次检查它会显示它恢复为。我将很快改变系统的工作方式,但我想知道这是否是一个已知的C或unity的东西,用于将字符串数组中的空格转换为空字符串 数组只初始化过一次,在搜索整个项目时,monodevelop唯一能找到的位置就是我在发布的第二个代码段中检查它。任何帮助或信息都将不

我遇到一只奇怪的虫子。在下面的代码中,我设置了一个15个字符串的数组,使其等于。但是,当我稍后在代码中检查这些值时,第一个索引gridContents[0]等于而不是。我手动检查并设置gridContents[0]=;但稍后再次检查它会显示它恢复为。我将很快改变系统的工作方式,但我想知道这是否是一个已知的C或unity的东西,用于将字符串数组中的空格转换为空字符串

数组只初始化过一次,在搜索整个项目时,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] = " ";
    }
}
-编辑

必须是unity/mono bug。如果我不使用默认/空空间,则不会发生错误。在整个项目中唯一可以找到的mono是我检查是否有任何值,因此它不会在任何地方被编辑。在我使用它显示文本之前,它也不会出现。代码本质上是,如果字符串是空的,则显示一个空网格。如果不是,则在网格中显示一个白色正方形。网格是3行5行。我到处检查,直到检查字符串是否正确时,错误才出现

非常奇怪的错误,通过使用与表示空网格空间不同的字符序列修复

-编辑2


问题解决了。unity中的字符串可能是因为MonoBehavior默认为空字符串而不是null。我必须检查一些代码,当我第一次运行程序时,用户是否持有某个尚未分配的内容,因此变量不是空的。因为不是,我的网格注册了一个空白项。所以对于将来有这种问题的人。。。确保您的unity字符串都设置为某个值,如果它们应该为null,则设置为null。即使如此,检查它,因为unity中的空字符串打印空值哈哈

数组本身不会发生变异。2个选项:a一些未显示的代码正在操作数组,或者b在某个点上您正在谈论一个不同的数组有趣,哈?我假设它与统一相关。如果我按下键显示网格,直到代码尝试检查每个网格的值,错误才会显示。非常奇怪,但暂时已修复。这与统一无关。您是否尝试使用==?检查答案:不,这不是==vs.Equals的问题。我终于缩小了范围。在屏幕之间切换时,我用来确定网格是否为空的变量之一被设置为null。一些代码仍在试图访问它。因此,它没有给出null,而是给出了空字符串。由于不是,它开始导致一些网格中有空项的错误-编辑只是为了澄清c字符串默认为空,monobehavior/unity字符串默认为空。这就是为什么我没有早点注意到这一点。