-4

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

今必要なもの

  1. BitVector64.Sectionに値を持つMysect2。ExplictityをBitVector32.Sectionに変換し、引数を渡す必要があります。

以下の会話は私のために働いていません

            mySect3 = BitVector32.CreateSection(7, (BitVector32.Section) mySect2);
  1. mysect3のBItVector32.Sectionの値を取得し、BitVector64.Sectionに変換する必要があります

以下の会話は私のために働いていません

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

また

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

1 に答える 1

7

.NET フレームワークには、「BitVector64」という名前の型はありません。どこかからコピーしたと推測する必要があります。明らかに、コピーしたこのコードは、BitVector32.Section から BitVector64.Section への暗黙的な変換をサポートしていません。

当然のことながら、それが提供する最適化は非常に小さいです。むしろ逆に、uint から ulong への変換は比較的コストがかかり、メモリをわずかに節約するだけの価値はありません。特にこれは構造体なので。

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

于 2011-08-12T12:38:51.423 に答える