如何在 C# 中打开具有重复值或布尔值的枚举?
给定一个枚举类型:
enum SOMEENUM
{
A = true,
B = false,
C = true
}
我想切换
,例如:
public void SWITCHON (SOMEENUM sn)
{
switch(s)
{
case SOMEENMUM.A : xxxxxxxx.......
}
}
但这无法编译;我猜它使用了枚举的 bool
值。
我想打开 Enum,就好像没有为其分配值一样。
Given an enum type:
enum SOMEENUM
{
A = true,
B = false,
C = true
}
I want to switch
on this like:
public void SWITCHON (SOMEENUM sn)
{
switch(s)
{
case SOMEENMUM.A : xxxxxxxx.......
}
}
But this doesn't compile; I guess it's using the bool
value of the enum.
I want to do switch on Enum as if there is no value assigned to it.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
首先:
C# 中的枚举不支持 bool 作为值。
所以它应该是整数。
如果我们将枚举的 2 个属性设置为相同的值,我们可以认为其中一个丢失了。
根据我的理解,你实际上想做的是:
以某种方式标记枚举的 2 个属性是相等的。
我的建议:
将返回 bool 的 Enum 扩展 因此
,您可以正常切换,并且可以随时检查您的枚举 boll 标志是什么,只需调用该实例的 GetDescriptionAsBool 方法即可。
First of all:
Enums in C# do not support bool as value.
So It should be integers.
If we set 2 property's of enum to the same value we can consider one of them lost.
From my understanding what you actually is trying to do is:
Somehow flag that 2 property's of enum are equal.
My suggestion:
Extension for Enum which will return bool
As a result you can switch normally and at any time can check what is your enums boll flag just calling GetDescriptionAsBool method of that instance.
重复的值只是同一事物的不同名称。没有办法区分,因为枚举是作为值存储的,而不是作为名称存储的。
至于
bool
值,您可以使用if
而不是switch
。Repeated values are just different names for the same thing. There's no way to tell the difference because enums are stored as the values, not as the names.
As for
bool
values, you use anif
for those instead of aswitch
.枚举需要数值但不必设置。我建议删除就
这样
enums require numerical values but do not have to be set. I suggest just removing leaving it like
so