gpt4 book ai didi

c# - 在 C# 中,枚举上的开关是否需要默认大小写?

转载 作者:IT王子 更新时间:2023-10-29 04:18:05 25 4
gpt4 key购买 nike

我看过帖子 relating to C++ ,但我特别要求 C# .NET (4.0+)。

在下面的例子中是否需要默认大小写?

public enum MyEnum : int
{
First,
Second
}

public class MyClass
{

public void MyMethod(MyEnum myEnum)
{
switch (myEnum)
{
case MyEnum.First: /* ... */ break;
case MyEnum.Second: /* ... */ break;

default: /* IS THIS NECESSARY??? */ break;
}
}
}

最佳答案

认为 .Net 枚举值仅限于枚举中声明的值是一种常见的误解。实际上,尽管它们可以是枚举基类型范围内的任何值(默认为 int)。例如以下是完全合法的

MyMethod((MyEnum)42);

此代码将在没有警告的情况下编译,并且不会命中任何 case 标签。

现在,您的代码是否选择处理此类场景是一个策略决定。这不是必需的,但我肯定推荐有一个。我更喜欢将 default 添加到枚举上的每个 switch 我专门为此场景使用以下模式编写

switch (value) { 
...
default:
Debug.Fail(String.Format("Illegal enum value {0}", value));
FailFast(); // Evil value, fail quickly
}

关于c# - 在 C# 中,枚举上的开关是否需要默认大小写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4472765/

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