C# 将位数组强制转换为位向量32

C# 将位数组强制转换为位向量32,c#,C#,是否可以将位数组转换为位向量32而无需执行以下操作: 位数组>整数>位向量32(整数) 这显然不起作用: var bitArray = new BitArray(32); bitArray[1] = true; var bitVector = new BitVector32(0); for(var c = 0; c < bitArray.Length; c++) { bitVector[c] = bitArray[c]; } var位数组=新位数组(32); 位数组[1]=真;

是否可以将位数组转换为位向量32而无需执行以下操作:

位数组>整数>位向量32(整数)

这显然不起作用:

var bitArray = new BitArray(32);
bitArray[1] = true;

var bitVector = new BitVector32(0);
for(var c = 0; c < bitArray.Length; c++)
{
    bitVector[c] = bitArray[c];
}
var位数组=新位数组(32);
位数组[1]=真;
var bitVector=新的位向量32(0);
for(var c=0;c
我知道BitVector32是一种结构,因此应该是不可变的。这是否意味着我必须首先确定整数才能执行“强制转换/转换”

我知道BitVector32是一种结构,因此应该是不可变的

这是一个常见的神话。类可以是不可变的,结构可以是可变的
BitVectr32实际上是一个可变结构。代码中真正的问题是,您假设
BitVector32
索引器与
BitArray
(或数组、列表等)索引器匹配。但是,
BitVector32
索引器声明如下

public bool this[int bit] { get; set; }
美国呢

获取或设置指定的掩码所指示的位标志的状态

所以工作代码是这样的

var bitVector = new BitVector32(0);
for (var c = 0; c < bitArray.Length; c++)
    bitVector[1 << c] = bitArray[c];
var bitVector=新的位向量32(0);
for(var c=0;cbitVector[1谢谢。老实说,我看了一些掩码示例,它们没有意义。但是,您的示例非常棒!