gpt4 book ai didi

c# - C#中uint转int的编译时间转换

转载 作者:太空狗 更新时间:2023-10-29 22:53:08 29 4
gpt4 key购买 nike

我在一段旧代码中有一个这样的枚举:

[Flags]
public enum Example: uint
{
Foo = 0x00000001,
Bar = 0xC0000000
}

现在,FxCop is complaining关于这个使用 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 支持时,我可以依赖这里的位格式匹配它使用的格式吗?

最佳答案

这里使用unchecked关键字就可以了;持久化的位模式将是您所期望的。

[Flags]
public enum Example
{
Foo = 0x00000001,
Bar = unchecked((int)0xC0000000);
}

关于c# - C#中uint转int的编译时间转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11873760/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com