我为BitVector64创建了mysec变量。对于小于8的版本,我想使用BitVector32
生成值 static BitVector64.Section mySect1;
static BitVector64.Section mySect2;
static BitVector64.Section mySect3;
if (versions) > 7)
mySect2 = BitVector64.CreateSection(14, mySect1); // V1 - 3 bits
else
mySect3 = BitVector32.CreateSection(7, mySect2);
我现在需要什么
以下转换对我不起作用
mySect3 = BitVector32.CreateSection(7, (BitVector32.Section) mySect2);
以下转换对我不起作用
mySect3 = BitVector32.CreateSection(7, (BitVector32.Section) mySect2) as BitVector34.Section;
或
mySect3 = (BitVector64.Section) BitVector32.CreateSection(7, (BitVector32.Section) mySect2) ;
答案 0 :(得分:7)
.NET框架中没有名为“BitVector64”的类型。我不得不猜你从某个地方复制了它。显然,您复制的代码不支持从BitVector32.Section到BitVector64.Section的隐式转换。
这并不奇怪,它提供的优化非常小。相反,从uint到ulong的转换相对昂贵,并且不值得节省非常小的内存。特别是因为这是一个结构。
BitVector32(可能是BitVector64)明确地使位操作快速有效。比BitArray更快,因为它可以利用cpu寄存器操作。不要让它变慢。