Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#-2D字符串数组数组_C#_Arrays_Multidimensional Array_3d_2d - Fatal编程技术网

C#-2D字符串数组数组

C#-2D字符串数组数组,c#,arrays,multidimensional-array,3d,2d,C#,Arrays,Multidimensional Array,3d,2d,我正在尝试为基于控制台的游戏创建世界地图 在世界级中,我有可以使用级别打印方法打印的字符串数组 public static string[] A1 = new string[] { (" level data"), (" level data"), }; 如果我这样做了,这就行了 Render.DrawLevel(World.A1); 其中Render.DrawLevel采用参数: (string[] _level) 但是,在世界级中,我想创建一个二维数组,它可以容纳地图的

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

在世界级中,我有可以使用级别打印方法打印的字符串数组

public static string[] A1 = new string[]
{
    (" level data"),
    (" level data"),
};
如果我这样做了,这就行了

Render.DrawLevel(World.A1);
其中Render.DrawLevel采用参数:

(string[] _level)
但是,在世界级中,我想创建一个二维数组,它可以容纳地图的所有字符串数组

我试过:

public static string[,][] Map = new string[,][]
{
    { A1 , A2 },
    { B1 , B2 },
};
但如果我尝试使用:

World.Map[0,0]
当我的level参数打印出来时,我得到一个错误,它是
NULL
,而不是字符串[]A1

如何创建数组的二维数组,并正确引用它以获取字符串[]参数

多谢各位


编辑:不正确地将代码复制为“static void”,而不仅仅是“static”。

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

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

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


关于您的问题,最好的答案是阅读大量相关书籍。

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

语法非常好

这将按预期工作:

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

谢谢,但这只是一个代码复制错误,而不是我遇到的实际问题。我现在已经编辑好了。我已经读了好几遍了。这对我理解多维数组非常有帮助。我无法找出无法引用数组项的问题出现在哪里。问题不在于数组语法,而在于变量声明。我希望其他人也会觉得你的链接很有帮助。谢谢。是的,对不起-我误解了你的代码,认为A1 A2 B1和B2是字符串。你正在创建一个二维数组。也就是说,数组中的每个元素都是数组本身。数组是引用类型,因此,它的默认值是
null
。想想当你制作一个字符串数组时会发生什么;数组的元素将是
null
,直到你给它们赋值,你的情况基本上是一样的。您需要初始化
Map[,]
的每个元素,因为它们不会像您期望的那样自动引用空数组。谢谢您,我犯了一个新手错误,或者在引用它们之后分配了变量,但仍然希望它们具有指定的值。这就是问题的原因。谢谢!我觉得没有注意到错误的初始化顺序很傻,我太习惯于自由排序的类定义了,以至于忘了它不适用于变量赋值。你帮我省去了很多困惑。