bool [,] - 这个语法在C#中表示什么?

5

我发现在旧代码中有以下这行代码:

protected bool[,] PixelsChecked;

这里的[,]是什么意思?

9
二维数组。请参见 http://msdn.microsoft.com/zh-cn/library/aa288453(v=vs.71).aspx - harold
5个回答

10

这是一个二维数组。

.NET中有两种不是单一维度的数组:

  1. 多维数组:

    int[,] a;    // 2 dimensions
    int[,,] b;   // 3 dimensions, and so on
    
  2. 嵌套数组(数组的数组):

  3. int[][] a;   // an array of arrays of ints
    int[][][] a; // an array of arrays of arrays of ints
    

在这两种情况下,在使用变量之前需要初始化它。

用法也是不同的,在第一种情况下:

int value = a[1, 2]; // note the comma, and single pair of brackets

在第二种情况下,您需要分别处理每个数组:

int value = a[1][2]; // the first [1] will return an array, and then you take
                     // the 3rd element (0-based) of that

还要记得,你可以在一条语句中初始化一个多维数组:

int[,] a = new int[10, 20];

相比之下,针对锯齿数组的单个语句将创建一个充满空引用的单个数组:

int[][] a = new int[10][];

您还需要将该数组的所有元素初始化为它们对应的数组引用,以下是使用LINQ在一条语句中快速完成此操作的方法:

您还需要将该数组的所有元素初始化为它们对应的数组引用,以下是使用LINQ在一条语句中快速完成此操作的方法:

int[][] a = Enumerable.Range(0, 10).Select(new int[20]).ToArray();
// 10 x 20

还可参考MSDN页面获取更多信息。


有趣的是,JITter为访问锯齿数组生成的代码比访问多维数组的代码更快,有关详细信息请参见此问题


8
[,]是一个二维数组。
您可以像这样进行初始化:
protected bool[,] PixelsChecked = new bool[Width, Height];

这是访问它的方法:
bool leftTop = PixelsChecked[0, 0];

这基本上是一个带有值的矩形,你可以使用[x,y]来访问它们。

你也可以使用以下方式创建三维及以上的数组:

protected bool[,,] Cube = new bool[5,5,5];

protected bool[,,,] _4dimensional = new bool[10,10,10,10];

5

这是多维数组的语法。

数组可以有多个维度。

在这种情况下,它是二维数组。一个数组可以有很多维度。在C#中,可以使用特殊的语法来使用多维数组。

对于语法用法,如果您想声明n-维数组,则应使用逗号n-1次。

当您使用bool[,] PixelsChecked时,它声明了一个名为PixelsChecked的二维数组,并将其元素类型定义为boolean

例如;

bool[,] PixelsChecked = new bool[2,2];

PixelsChecked[0, 0] = true;
PixelsChecked[0, 1] = false;
PixelsChecked[1, 0] = true;
PixelsChecked[1, 1] = false;

记住,在使用数组之前需要对其进行初始化。
例如,二维数组模拟平面,而三维数组模拟立方体或其他结构。

@Downvoter,您能否至少评论一下,这样我就可以看到可能出了什么问题? - Soner Gönül

3
这是一个二维数组,基本上是由布尔值组成的2D网格。
要创建一个,你可以这样做:
protected bool[,] PixelsChecked = new bool[Width, Height];

你甚至可以制作第三维。
protected bool[,,] PixelsChecked = new bool[Width, Height, Length];

如果您想获取或设置特定的坐标,
bool Value  = PixelsChecked[X,Y];

数组有很多种类型,你可以做很多事情。你可以在这里这里找到一个不错的教程。


甚至第四个。或第五个。或第六个。以此类推。 - It'sNotALie.

2

bool[,]是一个包含bool类型的二维数组。

基本上,这个数组不像这样:

true, false, false, true, false, true, etc.

它的结构类似于这样:

true, false, false, true, false, true, etc.
true, false, false, true, false, true, etc.
true, false, false, true, false, true, etc.
true, false, false, true, false, true, etc.
true, false, false, true, false, true, etc.
true, false, false, true, false, true, etc.
etc.

因此,您可以像这样访问第二个项目和第三个右侧的项目:

arrayName[1,2];

还有其他方法可以做到这一点,比如制作数组的数组,但这种方法保持了恒定的长度,更好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接