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

Val*_*itz 5 c#

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

protected bool[,] PixelsChecked;
Run Code Online (Sandbox Code Playgroud)

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

ang*_*son 10

这是一个二维数组.

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

  1. 多维数组:

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

    int[][] a;   // an array of arrays of ints
    int[][][] a; // an array of arrays of arrays of ints
    
    Run Code Online (Sandbox Code Playgroud)

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

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

int value = a[1, 2]; // note the comma, and single pair of brackets
Run Code Online (Sandbox Code Playgroud)

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

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

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

int[,] a = new int[10, 20];
Run Code Online (Sandbox Code Playgroud)

而对于锯齿状数组的单个语句将创建一个充满空引用的单个数组:

int[][] a = new int[10][];
Run Code Online (Sandbox Code Playgroud)

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

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

有关详细信息,另请参阅主题上MSDN页面.


有趣的事实:JITter生成更快的代码来访问锯齿状数组,而不是多维数组,请参阅此问题以获取更多信息.


pas*_*ein 8

[,]是一个二维数组.

您可以像这样初始化它:

protected bool[,] PixelsChecked = new bool[Width, Height];
Run Code Online (Sandbox Code Playgroud)

这是你访问它的方式:

bool leftTop = PixelsChecked[0, 0];
Run Code Online (Sandbox Code Playgroud)

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

您还可以创建三维和更多维数组

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

protected bool[,,,] _4dimensional = new bool[10,10,10,10];
Run Code Online (Sandbox Code Playgroud)


Son*_*nül 5

它是Multidimensional Arrays的语法

数组可以有多个维度.

在这种情况下,它是二维数组.数组可以有多个维度.使用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;
Run Code Online (Sandbox Code Playgroud)

请记住,您需要在使用之前初始化阵列.

例如,二维阵列模拟平面,而三维阵列模拟立方体或其他结构.