2010-12-01 19 views
3

私はBitArrayに問題があります。固定長のビット配列の配列

目標は、私はちょうどインデックスでそれらにアクセスできるようにする必要があります7.

に0から番号8 80ビットのBitArraysのスタックを、シミュレートすることであり、私は単純な配列が私のために十分になると思います。

BitArrayオブジェクトを初期化するとき、私は私に

を与える、それが含まれていますビット数を指定する必要が
BitArray test = new BitArray(80); 

どのように私は、私は長さの値を指定する必要が知っている、それの配列を行うことができますか? ...

任意の考えを

は私が

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

のように、いくつかのことを試してみたが、私はいつもそれを長さを与えるためにしようとしてエラーが出ますか?事前

答えて

-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); 
    } 
} 

おかげで、ウィッヒはのために働くように見えます私。

良い一日をもう一度、ありがとう!

+1

Capacityの代わりにCountを使用する方が効果的です。 – Henrik

+0

はい、テスト中に気づきました。私は柔軟性のために、スタックカウントを定数で置き換えました。 – nrocha

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); 
2

まず、あなたのBitArray配列を([])このように作成します。

BitArray[] stack = new BitArray[8]; 

、その後、forループ内のすべての別々のbitarraysを初期化する(このようなもの):

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; 
+0

これは機能しません。各インスタンスarrに対してNullReferenceExceptionが発生します。 forループと 'stack [n] = new BitArray(80); 'のようなコードで個々の配列メンバを設定する必要があります。 –

+0

残念ながら、ここで配列をforeachするのは意味がありません。 – Ani

+0

私は "これのようなもの"と言ったが、テストしなかった。ちょうど解決策を指摘した。 Topicstarterは2つを組み合わせることを望んでいます。 – riffnl