我有这样一个枚举在旧的代码:
[Flags]
public enum Example: uint
{
Foo = 0x00000001,
Bar = 0xC0000000
}
现在的FxCop抱怨使用UINT而不是INT因为它支持字段这个枚举。 (我一直在负责获得此代码的FxCop干净越好......)但是有一种使用枚举的高位现有枚举值,因为它一直持续到我不能改变这个磁盘上的格式。 当我尝试编译此,C#编译器正确地抱怨:
error CS0266: Cannot implicitly convert type 'uint' to 'int'. An explicit conversion exists (are you missing a cast?)
所以,我打算将它更改为这个:
[Flags]
public enum Example
{
Foo = 0x00000001,
Bar = (int)0xC0000000
}
但是,我还不能肯定,我可以靠这个不扔算术异常,或正在读取或写入到磁盘时未正确处理。 我可以依靠位格式匹配这里时,枚举是由一个unsigned int支持它使用的格式?