iCo*_*777 23 c# multidimensional-array
我有一个2D数组如下:
long[,] arr = new long[4, 4] {{ 0, 0, 0, 0 },
{ 1, 1, 1, 1 },
{ 0, 0, 0, 0 },
{ 1, 1, 1, 1 }};
Run Code Online (Sandbox Code Playgroud)
我想以矩阵格式打印这个数组的值,如:
0 0 0 0
1 1 1 1
0 0 0 0
1 1 1 1
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
mar*_*etz 38
您可以这样做(使用稍微修改过的数组来显示它适用于非方形数组):
long[,] arr = new long[5, 4] { { 1, 2, 3, 4 }, { 1, 1, 1, 1 }, { 2, 2, 2, 2 }, { 3, 3, 3, 3 }, { 4, 4, 4, 4 } };
int rowLength = arr.GetLength(0);
int colLength = arr.GetLength(1);
for (int i = 0; i < rowLength; i++)
{
for (int j = 0; j < colLength; j++)
{
Console.Write(string.Format("{0} ", arr[i, j]));
}
Console.Write(Environment.NewLine + Environment.NewLine);
}
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)
像这样:
long[,] arr = new long[4, 4] { { 0, 0, 0, 0 }, { 1, 1, 1, 1 }, { 0, 0, 0, 0 }, { 1, 1, 1, 1 } };
var rowCount = arr.GetLength(0);
var colCount = arr.GetLength(1);
for (int row = 0; row < rowCount; row++)
{
for (int col = 0; col < colCount; col++)
Console.Write(String.Format("{0}\t", arr[row,col]));
Console.WriteLine();
}
Run Code Online (Sandbox Code Playgroud)
我写了扩展方法
public static string ToMatrixString<T>(this T[,] matrix, string delimiter = "\t")
{
var s = new StringBuilder();
for (var i = 0; i < matrix.GetLength(0); i++)
{
for (var j = 0; j < matrix.GetLength(1); j++)
{
s.Append(matrix[i, j]).Append(delimiter);
}
s.AppendLine();
}
return s.ToString();
}
Run Code Online (Sandbox Code Playgroud)
使用只需调用该方法
results.ToMatrixString();
Run Code Online (Sandbox Code Playgroud)