3

我遇到了麻烦BitArray

目标是模拟 8 个 80 位 BitArray 的堆栈,编号从 0 到 7。

我只需要能够通过索引访问它们,所以我认为一个简单的数组对我来说就足够了。

初始化BitArray对象时,我需要指定它将包含的位数,这给了我

BitArray test = new BitArray(80);

知道我需要指定长度值,我该如何做一个数组?

我已经尝试了几件事,比如

BitArray[] stack = new BitArray(80)[];

但是我在尝试给它长度时总是会出错......

有什么想法吗?

提前致谢

4

3 回答 3

4

不幸的是,据我所知,该框架似乎没有“规范”的数组初始化模式。

使用 LINQ 的一种方法是:

var stack = Enumerable.Range(0, 8)
                      .Select(i => new BitArray(80))
                      .ToArray();

或者:

var stack = Enumerable.Repeat<Func<BitArray>>( () => new BitArray(80), 8)
                      .Select(f => f())
                      .ToArray();

或者,

BitArray[] stack = new BitArray[8];

for(int i = 0; i < stack.Length; i++)
   stack[i] = new BitArray(80);
于 2010-12-01T08:37:11.547 回答
2

首先像这样创建您的 BitArray 数组 ([]):

BitArray[] stack = new BitArray[8];

然后在 for 循环中初始化所有单独的位数组(类似这样):

foreach (BitArray arr in stack)
{
    arr = new BitArray(80);
}

编辑:这样的东西或多或少是一个指针,没有经过实际测试;下面是:

BitArray[] stack = new BitArray[8];
for(int i=0;i<stack.Length;i++)
{
    stack[i] = new BitArray(80);
}
stack[0][0] = true;
于 2010-12-01T08:39:38.633 回答
-1

好...

我终于这样做了:

List<BitArray> stack = new List<BitArray>(8);

public FPU()
{
    //initialise the stack

    for (int i = 0; i < stack.Capacity; i++)
    {
        stack[i] = new BitArray(80);
    }
}

感谢您的回答,这使我找到了这个解决方案,这似乎对我有用。

祝你有美好的一天,再次感谢!

于 2010-12-01T08:52:12.203 回答