c# - 是否可以使用带有枚举的 switch 语句来捕获未设置的标志
问题描述
是否可以使用 switch 语句来捕获枚举中未设置的标志?我试过附加一个!到sampleEnum.Unset1
等的前面,但没有奏效。
public enum sampleEnum
{
Set1 = 1,
Set2 = 2,
Unset4 = 4,
Set8 = 8
}
switch (sampleEnum)
{
case sampleEnum.Set1:
Console.WriteLine("This should not run");
break;
case sampleEnum.Set2:
Console.WriteLine("This should not run");
break;
case sampleEnum.Unset4:
Console.WriteLine("This should run");
break;
case sampleEnum.Set8:
Console.WriteLine("This should not run");
break;
default:
break;
}
解决方案
我不是 100% 确定你关心的是什么真实情况,但我们应该能够解决这个问题
我更改了一些名称,但假设为 Enum :
public enum enumExampo
{
Set1 = 1,
Set2 = 2,
Unset4 = 4,
Set8 = 8,
set9 = 9
}
我设置了一个方法,如:
public static void checkExampo(enumExampo exampo)
{
switch (exampo)
{
case enumExampo.Set1:
Console.WriteLine("This should not run");
break;
case enumExampo.Set2:
Console.WriteLine("This should not run");
break;
case enumExampo.Unset4:
Console.WriteLine("This should run");
break;
case enumExampo.Set8:
Console.WriteLine("This should not run");
break;
case new enumExampo():
Console.WriteLine("is a new Instance");
break;
default:
Console.WriteLine($"Default, flagged for {exampo}");
break;
}
}
然后是用法:
var sampleEnum = new enumExampo();
var exNiner = enumExampo.set9;
checkExampo(sampleEnum);
checkExampo(exNiner);
在控制台中为我们提供以下结果:
是一个新的实例
默认值,标记为 set9
推荐阅读
- python-3.x - 使用 scipy.integrate.solve_bvp 将初始值问题调整为边界值问题?
- html - 元素出现乱序
- javascript - StateSave 在 Yajra 数据表上的外部过滤器中不起作用
- string - PySpark:将字符串转换为时间戳会给出错误的时间
- reactjs - 使用反应钩子每秒使用状态并仅在状态发生更改时更新 DOM
- android - Angular Native-script, Component 是 2 个模块声明的一部分,即使只在一个地方声明
- java - 将伪代码while循环转换为java
- java - Swing:如何知道 JComponent 的像素是否透明?
- python - 已编辑(重发帖子):使用二分定理找到美式看跌期权的隐含波动率
- kubernetes - Kubernetes 上的批处理