gpt4 book ai didi

c# - C#中错误的枚举值

转载 作者:行者123 更新时间:2023-12-04 11:51:49 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Enum helper in c# not giving expected result

(1 个回答)



What determines which name is selected when calling ToString() on an enum value which has multiple corresponding names?

(3 个回答)



Using an enum having entries with the same value of underlying type

(3 个回答)


去年关闭。




为什么打印以下内容EOF作为输出而不是 ILLEGAL ?如果我将 EOF 的初始化删除为 NULL 字符,它会按预期工作。不明白这里发生了什么?

public enum TokenType {
ILLEGAL,
EOF= '\0',//remove the initialization to have it work as expected
IDENT,
INT
};

void Main()
{
Console.WriteLine(TokenType.ILLEGAL);//Prints EOF. Should have printed ILLEGAL
}

最佳答案

通过初始化 EOF '\0' 的值你给它一个值 0 .
你可以在这个例子中看到这一点:

Console.WriteLine(Convert.ToInt16(TokenType.EOF));
Console.WriteLine($"IntValue: {Convert.ToInt16('\0')}");

0
IntValue: 0


在内部,枚举将在整数向上计数时获得从 0 开始的值。所以在表面之下,你的枚举看起来像这样:
public enum TokenType
{
ILLEGAL = 0,
EOF = 1
IDENT = 2,
INT = 3
};
但您选择强制执行 0关于值 EOF !所以你有 2 个枚举名称代表相同的值。编译器只采用它可以找到的第一个。

关于c# - C#中错误的枚举值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63806156/

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