C# 在 C# 中构造对象时方括号 ([]) 的用途是什么
C# What is the Use of Square Brackets ([]) when construction an Object in C#
这个问题可能非常基础,但我偶然发现了一行我从未见过的代码,并且想知道方括号的用途是什么。
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 是如何工作的吗?这样做的好处是什么?
这不是一个对象。当您使用方括号时,您是在声明一个 array(与 C 和 C++ 不同,您不指定元素的数量。相反,您在初始化数组时执行此操作,带有 new
语句 (new <Type>[<itemsNumber>]
))。数组是一组对象,任何对象都应该初始化 - 任何数组元素(数组项的术语)包含对象的默认值 - 数字为 0,引用类型和指针为 null
等。但是当你声明一个数组时,你在内存中保存了一个位置来存储数组元素(数组是引用类型,所以它们存储在堆中)。当您在数组声明中使用逗号时,您是在声明一个 多维数组 。这是一个矩阵(对于 2D 数组;它可能是 3D、4D 等)。要访问数组元素,请在方括号中指定所有索引,以逗号分隔。
有关 C# 中数组的更多详细信息,请参阅 https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/arrays/, and about multidimensional arrays - see https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/arrays/multidimensional-arrays。
在c#中,x[]
是一个x
类型的数组。 x[,]
是一个二维数组(当然,x[,,]
是一个三维数组等等)。
所以 - private NodeItem[,] map;
正在声明一个字段,该字段是 NodeItem
的二维数组,名为 map
。
之后的行 - map = new NodeItem[width, height];
初始化数组 - 因此它现在包含 width * height
对 NodeItem
的引用,所有这些都隐式初始化为 default(NodeItem)
- null
引用类型,以及值类型的任何默认值。
进一步阅读,Arrays (C# Programming Guide) And Multidimensional Arrays (C# Programming Guide)
这个问题可能非常基础,但我偶然发现了一行我从未见过的代码,并且想知道方括号的用途是什么。
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 是如何工作的吗?这样做的好处是什么?
这不是一个对象。当您使用方括号时,您是在声明一个 array(与 C 和 C++ 不同,您不指定元素的数量。相反,您在初始化数组时执行此操作,带有 new
语句 (new <Type>[<itemsNumber>]
))。数组是一组对象,任何对象都应该初始化 - 任何数组元素(数组项的术语)包含对象的默认值 - 数字为 0,引用类型和指针为 null
等。但是当你声明一个数组时,你在内存中保存了一个位置来存储数组元素(数组是引用类型,所以它们存储在堆中)。当您在数组声明中使用逗号时,您是在声明一个 多维数组 。这是一个矩阵(对于 2D 数组;它可能是 3D、4D 等)。要访问数组元素,请在方括号中指定所有索引,以逗号分隔。
有关 C# 中数组的更多详细信息,请参阅 https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/arrays/, and about multidimensional arrays - see https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/arrays/multidimensional-arrays。
在c#中,x[]
是一个x
类型的数组。 x[,]
是一个二维数组(当然,x[,,]
是一个三维数组等等)。
所以 - private NodeItem[,] map;
正在声明一个字段,该字段是 NodeItem
的二维数组,名为 map
。
之后的行 - map = new NodeItem[width, height];
初始化数组 - 因此它现在包含 width * height
对 NodeItem
的引用,所有这些都隐式初始化为 default(NodeItem)
- null
引用类型,以及值类型的任何默认值。
进一步阅读,Arrays (C# Programming Guide) And Multidimensional Arrays (C# Programming Guide)