gpt4 book ai didi

c# - 枚举且没有值为 '0' 的字段

转载 作者:太空狗 更新时间:2023-10-30 01:08:51 26 4
gpt4 key购买 nike

我做了如下测试代码:

public enum Test
{
One = 1,
Two = 2
}
public class User
{
public Test Flag { get; set; }
}

我是这样使用的:

var user = new User();
var value = typeof(Test).GetField(user.Flag.ToString());

Value 将为 null,因为 User.Flag 似乎已用 0 初始化。这是为什么? 0 不是我的枚举的有效值。不应该用第一个有效值(1)初始化吗?

最佳答案

枚举由整数类型支持并且表现得像它们(大部分)。

不幸的是,这意味着您可以将在基础类型上有效的任何值分配给枚举 - 没有检查。

在默认初始化的情况下,这将是基础类型的默认值,对于整数类型是 0

你也可以这样做,它会编译并运行:

var value = (Test)43;

也许重新定义你的枚举如下:

public enum Test
{
None = 0,
One = 1,
Two = 2
}

Enum类有一些方便的方法来处理枚举——比如 IsDefined查明变量是否包含枚举的定义值。

关于c# - 枚举且没有值为 '0' 的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8258979/

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