2011-08-12 4 views
-3

私はBitVector64のmysec変数を作成しました。バージョン8未満の場合は私が今BitVector64.SectionでBitvector64.SectionをBitvector32に変換する

  1. Mysect2た値を必要とする何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); 
    

    を使用して値を生成したいと思います。私はExplectityをBitVector32.Sectionに変換し、arugumentsを渡す必要があります。 converstion以下

私のため

  mySect3 = BitVector32.CreateSection(7, (BitVector32.Section) mySect2); 
  1. が動作していないことmysect3ためBItVector32.Sectionの値がconverstion以下BitVector64.Section

に変換する必要があり得るだろうではありません私のために働く

  mySect3 = BitVector32.CreateSection(7, (BitVector32.Section) mySect2) as BitVector34.Section; 

または

mySect3 = (BitVector64.Section) BitVector32.CreateSection(7, (BitVector32.Section) mySect2) ; 

答えて

6

.NET Frameworkには「BitVector64」という名前の型はありません。私はあなたがどこかからそれをコピーしたと推測しなければならないだろう。コピーしたこのコードは、BitVector32.SectionからBitVector64.Sectionへの暗黙的な変換をサポートしていません。

これは驚くべきことではありませんが、それが提供する最適化は非常に小さいです。逆に、uintからulongへの変換は比較的高価であり、メモリの節約にはあまり価値がありません。特にこれは構造体であるためです。

BitVector32(とおそらくBitVector64)は、ビット操作を迅速かつ効率的にするために明示的に存在します。それはCPUのレジスタ操作を利用できるので、BitArrayよりも高速です。遅くしないでください。

関連する問題