【发布时间】:2018-03-15 23:11:50
【问题描述】:
借口:
ChestType 是一个枚举
public enum ChestType
{
COMMON,
GEMNGOLDCHEST,
GODLYCHEST,
ASSCHEST
}
slotAndChestIndex 是 ChestType?[]
chestSlotsAndChestsSaved 是一个 int[]
(对不起,名字不好)
slotAndChestIndex[i] = (ChestType?)chestSlotsAndChestSaved[i] ?? null;
我相信上面的行说: “如果我不能将此 int 转换为 ChestType?那么将其表示为 null”
胸型?但是被设置为 -1 的值,这对我来说似乎很奇怪。
我在这里做错了吗?当我尝试将其设置为默认值(ChestType?)时,它仍将其设置为 -1 大声笑。我认为任何 Nullable 类型的默认值都是 null。
请告诉我我不明白的地方!
【问题讨论】:
-
"ChestType 是一个枚举" -- 你能发布这个枚举吗?
-
一个枚举可以有一个不限于其命名成员之一的值(请参阅current C# spec 的“9.3.10 枚举类型”一章)。因此,为什么将 int 强制转换为枚举类型永远不会失败。由于您想检查一个 int 值是否与给定的枚举成员匹配,您应该执行类似于 Chaim Eliyah 评论中提供的链接所示的操作...
-
公平地说,对于整数,它确实说你可以
EnumName thing = (EnumName)yourInt;;我从未尝试过使用可为空的枚举... -
?? null毫无意义。这意味着if a value is null, return null- 它已经没有该代码。 -
@ChaimEliyah 是的,我认为这可能是一个糟糕的设计,但它很好地解决了一个小问题。还看不到它会杀死我的程序...谢谢您的回答!