-3
私は、ビットフィールドの値を設定およびクリアする必要がある関数を含むクラスを持っています。ラインでI以下定数値 '-1025'は 'ushort`に変換できません
FlagsValues &= ~(UInt16)EFlagsValues.NIn;
にエラーが一定の値が「-1025」私のコードが間違っている何ushort
に変換できないことを言ってますし、なぜ私はこのエラーを取得していますか。?
public class MySetupC
{
private UInt16 m_FlagsValues;
private UInt16 m_FlagsMask;
public UInt16 FlagsMask { get { return m_FlagsMask; } private set { m_FlagsMask = value; } }
public UInt16 FlagsValues { get { return m_FlagsValues; } private set { m_FlagsValues = value; } }
[Flags]
public enum EFlagsMask
{
None = 0,
AIn = (1 << 0), //1
BIn = (1 << 1), //2
CIn = (1 << 2), //4
DIn = (1 << 3), //8
EIn = (1 << 4), //16
FIn = (1 << 5), //32
JIn = (1 << 6),
KIn = (1 << 7),
LIn = (1 << 8),
MIn = (1 << 9),
NIn = (1 << 10),
OIn = (1 << 11),
}
[Flags]
public enum EFlagsMask
{
None = 0,
AIn = (1 << 0), //1
BIn = (1 << 1), //2
CIn = (1 << 2), //4
DIn = (1 << 3), //8
EIn = (1 << 4), //16
FIn = (1 << 5), //32
JIn = (1 << 6),
KIn = (1 << 7),
LIn = (1 << 8),
MIn = (1 << 9),
NIn = (1 << 10),
OIn = (1 << 11),
}
public void SetNIn(bool enable)
{
if (enable)
{
FlagsValues |= (UInt16)EFlagsValues.NIn;
FlagsMask |= (UInt16)EFlagsMask.NIn;
}
else
{
//negate
FlagsValues &= ~(UInt16)EFlagsValues.NIn;
FlagsMask |= (UInt16)EFlagsMask.NIn;
}
}
}
1 << 10は1024を与えます。〜は符号なしで-1025になります。 –
他のビットに触れることなくビット10を消去したいだけです。 – liv2hak