c# - 为什么 'Int32 value__' 显示为枚举成员?

标签 c# enums

我正在对声明的枚举进行一些检查,我想知道为什么 Int32 value__ 始终显示为每个声明的枚举中的第一个枚举成员,因为它是成员的类型而不是本身就是一个成员?

要测试的示例代码:

[TestMethod]
public void TestEnumMember()
{
    var type = typeof(Colors);
    var info = type.GetTypeInfo();
    var members = info.DeclaredMembers.ToArray();
    foreach (var member in members)
    {
        Debug.WriteLine(member);
    }
}

public enum Colors
{
    Red,
    Blue,
    Green
}

输出:

Debug Trace:
Int32 value__
Colors Red
Colors Blue
Colors Green

最佳答案

嗯,并非总是如此。尝试将枚举的定义更改为public enum Colors : byte。那么值成员将是Byte value__

您将看到枚举的第一个成员是枚举值的实际后备存储。

关于c# - 为什么 'Int32 value__' 显示为枚举成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41179733/

相关文章:

java - 设置类变量的最佳方法是什么,它是基于 java 中依赖枚举的某些条件逻辑的枚举?

c# - 如何使用 LINQ to Entities 包含另一个表中的一个特定行

c# - 在 WCF REST 服务中返回非 JSON、非 XML 数据

c# - 连接 Program.cs 和 Form.cs

c# - 样式数据网格表 - 左上角

python - 访问python枚举成员时如何检测和调用函数

visual-c++ - 如何在 C++ CLI 中获取枚举项的名称?

c# - 发现现有项目的最佳方式是什么?

c++ - 枚举类型值作为 C++ 中数组的长度

c# - 有没有办法根据初始枚举值使用不同的构造函数?