gpt4 book ai didi

c# - 为什么我们需要在 C# 中类型转换枚举

转载 作者:可可西里 更新时间:2023-11-01 08:32:53 26 4
gpt4 key购买 nike

我有一个像这样的枚举:

public enum Test:int
{
A=1,
B=2
}

所以在这里我知道我的枚举是一个 int 类型但是如果我想做如下的事情:

int a = Test.A;

这行不通。

如果我有这样的类(class):

public class MyTest
{
public static int A =1;
}

我可以说,

int a = MyTest.A;

这里我不需要将 A 显式转换为 int。

最佳答案

So here I know my enum is an int type

不,不是。它有 底层 int 类型,但它是一个单独的类型。哎呀,这就是首先使用枚举的一半意义 - 您可以将类型分开。

当您想要在枚举值和它的等效数字之间进行转换时,您可以进行强制转换 - 这并不那么痛苦,而且它可以使您的代码在类型安全方面更简洁。基本上,它是其中一件事情,因为它是正确的事情,所以将其明确化是合适的。

编辑:您应该注意的一个奇怪之处是,从常量值 0 到枚举类型的隐式转换:

Test foo = 0;

事实上,在MS实现中,它可以是任何种常量0:

Test surprise = 0.0;

这是一个 bug,但现在修复为时已晚:)

我相信这个隐式转换的其余部分是为了更简单地检查标志枚举中是否设置了任何位,以及使用“0 值”的其他比较。就我个人而言,我不喜欢这个决定,但至少值得意识到这一点。

关于c# - 为什么我们需要在 C# 中类型转换枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11968868/

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