2

BitVector32 の動作に少し困惑しています。テストを参照してください。

[TestClass]
public class ParallelPortDevices {
    [TestMethod]
    public void BitVector32Test() {
        var lVector = new BitVector32(0);

        Assert.IsTrue(lVector[0]);
        Assert.IsFalse(lVector[1]);
    }
}

これはパスします。つまり、最初のビットは 1 に設定されます (テストによると)。ただし、ToString メソッドを実行すると、「BitVector32{0000000000000000000000000000000}」が返されます。

不足しているものはありますか?

前もって感謝します!

4

1 に答える 1

9

BitVector32インデックスにインデクサー構文を使用せず、ビットマスクとして使用します。たとえば、これを行う場合:

lVector[7] = true;

ToString与えるでしょう0...000111

ゲッターの逆コンパイルされたコードは次のようになります。

return ((long) this.data & (long) bit) == (long) (uint) bit;

したがって、最終的に何が起こるかは次のとおりです。

(0 & 0) == 0

もちろん、これは本当です。

于 2012-12-03T16:09:21.757 に答える