bool [,] - 这个语法在c#中意味着什么?

时间:2013-05-19 12:13:10

标签: c#

我在遗留代码中找到以下行:

protected bool[,] PixelsChecked;

[,]在这里意味着什么?

5 个答案:

答案 0 :(得分:10)

这是一个二维数组。

在.NET中,您可以使用两种不是单维的数组:

  1. 多维数组:

    int[,] a;    // 2 dimensions
    int[,,] b;   // 3 dimensions, and so on
    
  2. 锯齿状数组(数组数组):

    int[][] a;   // an array of arrays of ints
    int[][][] a; // an array of arrays of arrays of ints
    
  3. 在这两种情况下,您需要在使用之前初始化变量。

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

    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在一个语句中快速完成此操作的方法:

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

    另请参阅MSDN Page on the subject了解详情。


    有趣的事实:JITter为访问锯齿状数组生成的代码比用于多维数组的代码更快,有关详细信息,请参阅this question

答案 1 :(得分: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];

答案 2 :(得分:5)

这是 Multidimensional Arrays

的语法
  

数组可以有多个维度。

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

对于语法用法,如果要声明 n-diamensional array ,则应使用逗号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;

请记住,在使用之前需要初始化数组。

例如,二维数组模拟平面,而三维数组模拟立方体或其他结构。

答案 3 :(得分:3)

这是一个two dimensional array,基本上是一个布尔值的 2D 网格。

要创建一个,你可以这样做

protected bool[,] PixelsChecked = new bool[Width, Height];

你甚至可以制作第三维

protected bool[,,] PixelsChecked = new bool[Width, Height, Length];

如果您想获得或设置某个坐标

bool Value  = PixelsChecked[X,Y];

你可以做很多数组,有很多类型。你可以找到一个很好的教程herehere

答案 4 :(得分:2)

bool[,]bool s的二维数组。

基本上,不是像这样的数组:

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];

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