C#-多维位数组

use*_*993 0 c# arrays bitarray multidimensional-array

我正在尝试使用多维,BitArray但是我对如何设置或读取位感到困惑。

使用正常的一维尺寸,BitArray我可以简单地进行以下设置:

bitArray.Set(0, true);
Run Code Online (Sandbox Code Playgroud)

但是我不知道如何对二维位数组执行相同的操作。例如,以下代码没有意义,因为该Set方法需要一个索引,但是我之前已经在“ [0,0]”中提供了该索引:

    bitArray[0, 0].Set(0, true);
Run Code Online (Sandbox Code Playgroud)

我的问题:制作然后使用多维的正确方法是BitArray什么?

Dai*_*Dai 6

BitArrayCLR而言,的实例不是数组(也就是说,BitArray不是“数组类型”)。如果要存储二维位信息,则有几种选择(我所有的示例都创建一个10x20 2D体积):

a)使用BitArray像这样的单个数组:

// Init:
BitArray[] storage = new BitArray[ 20 ];
for(int y=0;y<storage.Length;y++) storage[y] = new BitArray( 10, true );

// Usage:
Boolean at5x7 = storage[7][5];
Run Code Online (Sandbox Code Playgroud)

b)通过按行索引来将BitArray本身用作2D空间(这实际上会更快,因为CLR不会频繁调用其边界检查):

// Init:
const Int32 width = 10, height = 20;
BitArray storage = new BitArray( width * height );

// Usage:
Boolean at5x7 = storage[ (5 * width) + 7];
Run Code Online (Sandbox Code Playgroud)