C# - 字符串数组的二维数组

本文关键字:二维数组 数组 字符串 | 更新日期: 2023-09-27 18:32:35

我正在尝试为基于控制台的游戏创建世界地图。

在 World 类中,我有可以使用水平打印方法打印的字符串数组。

public static string[] A1 = new string[]
{
    (" level data"),
    (" level data"),
};

如果我这样做,这有效

Render.DrawLevel(World.A1);

其中 Render.DrawLevel 采用参数:

(string[] _level)

但是,在 World Class 中,我想创建一个二维数组,可以容纳 Map 的所有字符串数组。

我试过:

public static string[,][] Map = new string[,][]
{
    { A1 , A2 },
    { B1 , B2 },
};

但是如果我尝试使用:

World.Map[0,0]

当我打印水平的参数时,我得到一个错误,说这是NULL,而不是字符串[] A1。

如何创建数组的 2d 数组,并正确引用它以获取 string[] 参数?

谢谢

鳍。

编辑:错误地将代码复制为"静态无效"而不仅仅是"静态"。

C# - 字符串数组的二维数组

Map初始化放在数组初始化之后。A1、A2、B1、B2 在初始化 Map 期间等于空。

语法非常好。

这按预期工作:

    public static string[] A1 = new string[]
        {
            (" level data 1"),
            (" level data 2"),
        };
    public static string[] A2 = new string[]
        {
            (" level data 1"),
            (" level data 2"),
        };
    public static string[] B1 = new string[]
        {
            (" level data 1"),
            (" level data 2"),
        };
    public static string[] B2 = new string[]
        {
            (" level data 1"),
            (" level data 2"),
        };
    public static string[,][] Map = new string[,][]
    {
        { A1, A2 },
        { B1, B2 },
    };

二维数组本质上是一个大小相等的数组数组。您可以将其可视化为矩阵,将每一列(或行,实际上并不重要)可视化为一个单独的数组。因此,第一行(列)中的元素将是每个数组的第一个元素。您正在做的是尝试创建数组的二维数组。

关于

这个问题的最佳答案是关于您的问题的精彩阅读。

您的 Map 签名不正确,它不能是 void 和多维字符串数组。将其更改为:

    public static string[,][] Map = new string[,][]
        {
            {A1,A2 },
            {B1,B2 },
        };