我遇到了BitArray
。
目标是模拟8个80位BitArrays的堆栈,编号从0到7。
我只需要能够通过索引访问它们,所以我认为一个简单的数组就足够了。
初始化BitArray
对象时,我需要指定它将包含的位数,这给了我
BitArray test = new BitArray(80);
我怎么能做一个数组,知道我需要指定长度值?
我尝试了几件事,比如
BitArray[] stack = new BitArray(80)[];
但是在试图给它长度时我总是会出错......
有什么想法吗?
提前致谢
答案 0 :(得分: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);
答案 1 :(得分: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;
答案 2 :(得分:-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);
}
}
感谢您的回答,这使我得到了解决方案,这似乎对我有用。
度过美好的一天,再次,谢谢!