C#更有效地将字符写入二维数组

C#更有效地将字符写入二维数组,c#,C#,我有一个120个字符的文本字符串。我想制作二维字符数组,6行20个字符。我想知道我是否可以用更少的变量更有效地完成这项工作?谢谢 循环: inti=0,u=0; 对于(int x=0;x

我有一个120个字符的文本字符串。我想制作二维字符数组,6行20个字符。我想知道我是否可以用更少的变量更有效地完成这项工作?谢谢

循环:

inti=0,u=0;
对于(int x=0;x<120;x++)
{
数组[i,u]=文本[x];
u++;
如果(u==19)
{
i++;
u=0;
}
}

您可以这样做:

int numRows = 6;
int numCols = 20;
for (int rowIdx = 0; rowIdx < numRows; rowIdx++)
{
    for (int colIdx = 0; colIdx < numCols; colIdx++)
    {
        array[rowIdx, colIdx] = text[rowIdx * numCols + colIdx];
    }
}
int numRows=6;
int numCols=20;
对于(int-rowIdx=0;rowIdx
您可以使用ToCharray方法,并且只能使用一个循环:

char [][] array = new char[6][];
for (int i = 0; i < 6; i++)
{
    array[i] = text.Substring(i * 20, 20).ToCharArray();
}
char[][]数组=新字符[6][];
对于(int i=0;i<6;i++)
{
数组[i]=text.Substring(i*20,20.ToCharArray();
}

在.Net中,由于边界检查,锯齿状数组比矩形数组更有效

var s = string.Concat(Enumerable.Range(0, 6).Select(i => i + "123456789 123456789"));

var a = new char[][] { s.ToCharArray(0, 20), s.ToCharArray(20, 20), s.ToCharArray(40, 20), 
                     s.ToCharArray(60, 20), s.ToCharArray(80, 20), s.ToCharArray(100, 20) };

// or a bit less efficient LINQ version
char[][] arr = Enumerable.Range(0, 6).Select(i => s.ToCharArray(i * 20, 20)).ToArray();

恐怕还是错了。我想应该是
rowIdx*20+colIdx
var s = string.Concat(Enumerable.Range(0, 6).Select(i => i + "123456789 123456789"));

var a = new char[][] { s.ToCharArray(0, 20), s.ToCharArray(20, 20), s.ToCharArray(40, 20), 
                     s.ToCharArray(60, 20), s.ToCharArray(80, 20), s.ToCharArray(100, 20) };

// or a bit less efficient LINQ version
char[][] arr = Enumerable.Range(0, 6).Select(i => s.ToCharArray(i * 20, 20)).ToArray();