如何声明一个二维数组
how to declare a bidimensional array
我有这个代码:
var test = new string[3, 2];
for (int i=0; i<3; i++)
{
for (int h=0; h<2; h++)
{
test[i, h] = "DataRows: " + i.ToString() + " " + h.ToString();
}
}
但是当我试图查看测试中的内容时,我看到了这个
如果我试图查看数组的任何项目中的内容,我会收到错误消息:
有人可以向我解释我做错了什么以及正确的方法是什么吗?
Visual Studio 2022,Blazor Webassembly,.NET6.0
谢谢
C# 支持多维数组 以及所谓的交错数组
下面的示例代码展示了如何同时使用它们
using System;
namespace Test
{
class Program
{
static void Main()
{
// Multidimensional array
string[,] multidimensionalArray = { { "alpha", "beta", "gamma" }, { "delta", "epsilon", "zeta" } };
for (int x = 0; x < multidimensionalArray.GetLength(0); x++)
{
for (int y = 0; y < multidimensionalArray.GetLength(1); y++)
{
Console.WriteLine(multidimensionalArray[x, y]);
}
}
// Jagged array
string[][] jaggedArray = { new string[] { "alpha", "beta", "gamma" }, new string[] { "delta", "epsilon", "zeta" } };
for (int x = 0; x < jaggedArray.Length; x++)
{
for (int y = 0; y < jaggedArray[x].Length; y++)
{
Console.WriteLine(jaggedArray[x][y]);
}
}
}
}
}
详情请见
法比奥
或者,您可以更轻松地使用 List
数据类型和 foreach
循环:
using System.Collections.Generic;
先添加上面的Reference
List<List<string>> list = new List<List<string>>();
list.Add(new List<string>(){"aaa", "bbb"});
list.Add(new List<string>(){"ccc", "ddd"});
foreach(var i in list)//outer list
{
foreach(string j in i)//inner list
{
//your code here
Console.WriteLine(j);
}
}
你的代码没有问题,你的问题与数组无关。检查 Blazor 调试设置。尝试使用不同的浏览器并检查您设置断点的位置。
如果您查看屏幕截图,您会发现异常 VSCodeDebugProtocol.ProtocolException
- 遵循异常。
这是您的循环在调试一个简单的控制台应用程序时完全正常运行的屏幕截图。问题不在于您的代码——而是您的调试状态。
我有这个代码:
var test = new string[3, 2];
for (int i=0; i<3; i++)
{
for (int h=0; h<2; h++)
{
test[i, h] = "DataRows: " + i.ToString() + " " + h.ToString();
}
}
但是当我试图查看测试中的内容时,我看到了这个
如果我试图查看数组的任何项目中的内容,我会收到错误消息:
有人可以向我解释我做错了什么以及正确的方法是什么吗?
Visual Studio 2022,Blazor Webassembly,.NET6.0
谢谢
C# 支持多维数组 以及所谓的交错数组
下面的示例代码展示了如何同时使用它们
using System;
namespace Test
{
class Program
{
static void Main()
{
// Multidimensional array
string[,] multidimensionalArray = { { "alpha", "beta", "gamma" }, { "delta", "epsilon", "zeta" } };
for (int x = 0; x < multidimensionalArray.GetLength(0); x++)
{
for (int y = 0; y < multidimensionalArray.GetLength(1); y++)
{
Console.WriteLine(multidimensionalArray[x, y]);
}
}
// Jagged array
string[][] jaggedArray = { new string[] { "alpha", "beta", "gamma" }, new string[] { "delta", "epsilon", "zeta" } };
for (int x = 0; x < jaggedArray.Length; x++)
{
for (int y = 0; y < jaggedArray[x].Length; y++)
{
Console.WriteLine(jaggedArray[x][y]);
}
}
}
}
}
详情请见
法比奥
或者,您可以更轻松地使用 List
数据类型和 foreach
循环:
using System.Collections.Generic;
先添加上面的Reference
List<List<string>> list = new List<List<string>>();
list.Add(new List<string>(){"aaa", "bbb"});
list.Add(new List<string>(){"ccc", "ddd"});
foreach(var i in list)//outer list
{
foreach(string j in i)//inner list
{
//your code here
Console.WriteLine(j);
}
}
你的代码没有问题,你的问题与数组无关。检查 Blazor 调试设置。尝试使用不同的浏览器并检查您设置断点的位置。
如果您查看屏幕截图,您会发现异常 VSCodeDebugProtocol.ProtocolException
- 遵循异常。
这是您的循环在调试一个简单的控制台应用程序时完全正常运行的屏幕截图。问题不在于您的代码——而是您的调试状态。