2010-12-01 167 views
3

我遇到了問題BitArray固定長度BitArrays陣列

的目的是模擬堆棧的8個80bit的BitArrays,編號從0到7

我只需要能夠通過索引來訪問他們,所以我覺得一個簡單的數組將是足以讓我。

當初始化一個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); 
    } 
} 

謝謝您的回答,其中含鉛我這個解決方案,似乎至極爲其工作我。

祝您有愉快的一天,再次感謝!

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]; 

然後初始化所有單獨bitarrays在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; 
+0

這不起作用。你會得到每個實例arr的NullReferenceException。你需要用一個for循環和一個像`stack [n] = new BitArray(80);` – 2010-12-01 08:42:11

+0

這樣的代碼來設置單獨的數組成員,不幸的是,在這裏`foreach`這個數組沒有意義。 – Ani 2010-12-01 08:42:37