3

で困っていBitArrayます。

目標は、0から7までの番号が付けられた8つの80ビットBitArrayのスタックをシミュレートすることです。

インデックスでアクセスできる必要があるので、単純な配列で十分だと思います。

オブジェクトを初期化するとき、BitArrayオブジェクトに含まれるビット数を指定する必要があります。これにより、オブジェクトが得られます。

BitArray test = new BitArray(80);

長さの値を指定する必要があることを知って、どうすれば配列を作成できますか?

私はいくつかのことを試しました

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

しかし、長さを与えようとすると常にエラーが発生します...

何かご意見は?

前もって感謝します

4

3 に答える 3

4

残念ながら、私の知る限り、このフレームワークには「正規の」配列初期化パターンがないようです。

LINQ を使用する 1 つの方法は次のとおりです。

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 に答える