【问题标题】:how to declare a bidimensional array如何声明一个二维数组
【发布时间】:2022-01-15 05:22:51
【问题描述】:

我有这个代码:

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

谢谢

【问题讨论】:

  • 您从哪里获得这些信息?如果这实际上是来自 DB 的数据集,那么在某些情况下调试器窗口不会显示正确的信息
  • 如您所见,数据就是这样创建的。它不是来自数据库,而是来自代码本身。第一个和第二个屏幕截图来自 Visual Studio 上的“快速观看”选项。您将如何正确调试?
  • 您确定屏幕截图符合您代码的最终结果(通过所有循环后)吗?我快速运行了您的示例,我的输出有 6 个条目,正如预期的那样。

标签: c# .net multidimensional-array


【解决方案1】:

您的代码没有问题,您的问题与数组无关。检查您的 Blazor 调试设置。尝试使用不同的浏览器并检查您设置断点的位置。

如果您查看屏幕截图,您会注意到异常 VSCodeDebugProtocol.ProtocolException - 遵循异常。

这是调试简单控制台应用程序时完全正常运行的循环的屏幕截图。问题不是你的代码——而是你的调试状态。

【讨论】:

    【解决方案2】:

    或者,您可以更轻松地将List 数据类型与foreach 循环一起使用:

    using System.Collections.Generic;
    

    先添加上面的引用

    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);
        }
    }
    

    【讨论】:

      【解决方案3】:

      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]);
                      }
                  }
      
              }
      
          }
      }
      
      

      更多信息,请参阅

      法比奥

      【讨论】:

        猜你喜欢
        • 2010-12-21
        • 1970-01-01
        • 2012-02-27
        • 2018-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-25
        • 2014-03-03
        相关资源
        最近更新 更多