我试图使用字符串和枚举的char索引创建
下面是我的
if (msgComingFromFoo[1] == Convert.ToChar(Message.Code.FOO_TRIGGER_SIGNAL.EnumDescriptionToString()))
{
//foo
}
下面是我的
switch (msgComingFromFoo[1])
{
case Convert.ToChar(Message.Code.FOO_TRIGGER_SIGNAL.EnumDescriptionToString()):
break;
}
为什么它接受
更新:
下面是
public class Message
{
public enum Code
{
[Description("A")]
FOO_TRIGGER_SIGNAL
}
}
如您所见,我需要指定给枚举的描述,而不是枚举值0。使用上述包装器中的
null
不能在case(在C#7之前)中使用表达式,但可以在switch中使用表达式,因此这将起作用:
switch (ConvertToMessageCode(msgComingFromFoo[1]))
{
case Message.Code.FOO_TRIGGER_SIGNAL:
break;
}
您将需要编写
这实在不是一个好的答案,因为它只是对以前的答案的阐述。不要接受它(也请不要支持任何合理的答案)。我只是把它作为一个答案来写,因为一个评论不符合这个解释。
您尝试了:
switch (msgComingFromFoo[1])
{
case Convert.ToChar(Message.Code.FOO_TRIGGER_SIGNAL.EnumDescriptionToString()):
break;
}
这不起作用,因为情况不是恒定的。正如建议的那样,最好的方法是将
如果这在某种程度上是不可能的,那么您总是可以切换字符串常量。但是,这很容易出错,并且破坏了首先使用枚举的目的。
switch (msgComingFromFoo[1])
{
case "A":
break;
}
另一个注意事项:记住数组是零索引的。您当前正在切换第二个元素,而不是第一个元素。对第一个元素使用