C#在C#中构造对象时,方括号([])的用途是什么

时间:2018-08-19 10:22:51

标签: c# object-initialization

这个问题可能是非常基本的,但是我across绊绊碰到从未见过的代码行,并想知道方括号的用途是什么。

        public NodeItem (bool isWall, Vector2 pos, int x, int y)
        {
            this.isWall = isWall;
            this.pos = pos;
            this.x = x;
            this.y = y;
        }

1.  private NodeItem[,] map;

2.  map = new NodeItem[width, height];

有人可以向我解释1和2的工作原理,以及这样做的好处是什么?

2 个答案:

答案 0 :(得分:2)

在c#中,x[]x类型的数组。 x[,]是一个二维数组(自然,x[,,]是一个三维数组,依此类推)。

所以-private NodeItem[,] map;声明了一个字段,该字段是NodeItem的二维数组,名为map

此后的行-map = new NodeItem[width, height];初始化数组-因此它现在包含对width * height的{​​{1}}引用,所有引用都隐式初始化为NodeItem-default(NodeItem)引用类型,以及值类型的任何默认值。

要进一步阅读,请Arrays (C# Programming Guide)Multidimensional Arrays (C# Programming Guide)

答案 1 :(得分:1)

这不是对象。使用方括号时,您声明的是 array (与C和C ++不同,您无需指定元素的数量。而是在初始化数组时执行此操作,并使用new语句(new <Type>[<itemsNumber>]))。数组是一组对象,应初始化任何对象 -任何数组元素(数组项的术语)均包含对象的默认值-表示0数字,null用于引用类型和指针等。但是,在声明数组时,需要在内存中保存一个位置以存储数组元素(数组是引用类型,因此它们存储在堆)。当在数组声明中使用逗号时,就是在声明多维数组。这是一个矩阵(用于2D数组;可以是3D,4D等)。要访问数组元素,请在方括号中指定所有索引,并用逗号分隔。

有关C#中数组的更多详细信息,请参见https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/arrays/和多维数组-请参见https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/arrays/multidimensional-arrays