C# bool[,]-这个语法在c中是什么意思?

C# bool[,]-这个语法在c中是什么意思?,c#,C#,我在遗留代码中找到以下行: protected bool[,] PixelsChecked; 这里的[,]是什么意思?这是 数组可以有多个维度 在本例中,它是二维数组。数组可以有多个维度。多维数组在C#中使用特殊语法 对于语法用法,如果要声明n-diamensional数组,应该使用逗号n-1次 当您使用bool[,]PixelsChecked时,它声明了名为PixelsChecked的二维数组,其元素类型为boolean 榜样 bool[,] PixelsChecked = new bool

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

protected bool[,] PixelsChecked;
这里的
[,]
是什么意思?

这是

数组可以有多个维度

在本例中,它是二维数组。数组可以有多个维度。多维数组在C#中使用特殊语法

对于语法用法,如果要声明n-diamensional数组,应该使用逗号
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;
请记住,在使用数组之前需要初始化它


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

您可以这样初始化它:

protected bool[,] PixelsChecked = new bool[Width, Height];
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];
这是您访问它的方式:

bool leftTop = PixelsChecked[0, 0];
它基本上是一个带有值的矩形,您可以使用
[x,y]
访问它们

您还可以使用

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

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

bool[,]
bool
s的二维数组

基本上,不需要这样的数组:

protected bool[,] PixelsChecked = new bool[Width, Height];
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];
它的结构是这样的:

protected bool[,] PixelsChecked = new bool[Width, Height];
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];
因此,您可以访问,假设第二项向下,第三项向右,如下所示:

protected bool[,] PixelsChecked = new bool[Width, Height];
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];

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

这是一个二维数组

在.NET中,可以有两种类型的非一维数组:

  • 多维数组:

    int[,] a;    // 2 dimensions
    int[,,] b;   // 3 dimensions, and so on
    
  • 交错阵列(阵列的阵列):

  • 在这两种情况下,您都需要在使用变量之前对其进行初始化

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

    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 = Enumerable.Range(0, 10).Select(new int[20]).ToArray();
    // 10 x 20
    
    而锯齿数组的单个语句将创建一个充满空引用的数组:

    int[][] a = new int[10][];
    
    您还需要将该数组的所有元素初始化为其对应的数组引用,下面是一种使用LINQ在一条语句中实现这一点的快速方法:

    int[,] a = new int[10, 20];
    
    int[][] a = Enumerable.Range(0, 10).Select(new int[20]).ToArray();
    // 10 x 20
    
    有关更多信息,请参见


    有趣的事实:与多维数组相比,抖动生成访问锯齿数组的代码的速度更快,有关更多信息,请参阅。

    它基本上是一个由布尔值组成的二维网格

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

    protected bool[,] PixelsChecked = new bool[Width, Height];
    
    你甚至可以做一个三维空间

    protected bool[,,] PixelsChecked = new bool[Width, Height, Length];
    
    如果要获取或设置某个坐标

    bool Value  = PixelsChecked[X,Y];
    

    你可以用数组做很多事情,有很多类型。您可以找到一个很好的教程和。

    二维数组。看到或甚至第四个。或者第五个。或者第六。诸如此类,我想至少发表一下评论,这样我就可以知道可能有什么问题了?