这是我的测试代码
public string myMethod(int[,] anArray)
{
string aString = "";
for (int i = 0; i < anArray.GetLength(0); i++)
{
for (int j = 0; j < anArray.GetLength(1); j++)
{
if (j == anArray.Length - 1)
{
aString += " " + anArray[i, j] + "\r\n";
continue;
}
aString += anArray[i, j] + "|";
}
}
return aString;
}
当我调用该方法时,我期待一个包含换行符的字符串。
我想要的结果
0|0|0
0|0|0
0|0|0
但是我得到了这个
0|0|0|0|0|0|0|0|0|
感谢。
编辑: if条件上的愚蠢错误,仅此而已。
第二次编辑:我在代码的后半部分中出现了错误的if条件语句,导致字符串不正确。
答案 0 :(得分:2)
字符串是不可变的,效率低下。
StringBuild sb = new StringBuilder();
for ()
{
sb.AppendLine(" " + anArray[i, j]);
}
根据评论
anArray.GetLength(1)
anArray.Length
不一样
答案 1 :(得分:1)
if (j == anArray.Length - 1)
替换为if (j == anArray.GetLength(1) - 1)
public string myMethod(int[,] anArray)
{
string aString = "";
for (int i = 0; i < anArray.GetLength(0); i++)
{
for (int j = 0; j < anArray.GetLength(1); j++)
{
if (j == anArray.GetLength(1) - 1)
{
aString += anArray[i, j] + "\r\n";
continue;
}
aString += anArray[i, j] + "|";
}
}
return aString;
}
答案 2 :(得分:1)
代码应如下所示:
if (j == anArray.GetUpperBound(1))
{
aString += anArray[i, j] + "\r\n";
continue;
}