带十六进制值的C#开关箱状态

带十六进制值的C#开关箱状态,c#,switch-statement,C#,Switch Statement,我有一个以十六进制值接收和感知的uint值(就使用而言),我想根据该值设置一个开关盒,如下例所示: uint foo=someHexValue uint a; switch(foo){ case 0xFFFF : a = 0x0;break; case 0xFFFE : a = 0x1;break; case 0xFFFC : a = 0x2;break; case 0x0001 : a = 0x3;break; case 0x0010

我有一个以十六进制值接收和感知的uint值(就使用而言),我想根据该值设置一个开关盒,如下例所示:

uint foo=someHexValue
uint a;
switch(foo){
    case 0xFFFF : a = 0x0;break;   
    case 0xFFFE : a = 0x1;break;   
    case 0xFFFC : a = 0x2;break;
    case 0x0001 : a = 0x3;break;   
    case 0x0010 : a = 0x4;break; 
}
请注意,foo的值不一定是有序的,也不一定包含所有可能的值

我可以按照下面的步骤讨论十进制值吗

uint foo=hexValue
uint a;
switch(foo){
    case 65535: a = 0x0;break;   
    case 65534: a = 0x1;break;   
    case 65532: a = 0x2;break; 
    case 1: a = 0x3;break;   
    case 16: a = 0x4;break;   
}
在开关箱中是否可以使用十六进制值?还有其他方法吗?

当然可以。“十六进制值”只是一个整型的符号,它是C#
开关
块中的有效大小写标签


除了
开关
块的后续性质(您通过
中断
语句来避免)之外,案例标签的顺序并不重要。

是。您的代码可以正常工作。可以使用十六进制值将uint类型分配给。如果在代码执行后尝试打印“foo”或“a”的值,则可以看到它们具有与分配给它们的十六进制值相对应的整数值


十六进制值可以在switch case语句中代替整数值使用。这两种方法都可以很好地工作。

您是否获得了预期的输出?或者它给了你任何错误?实际的问题是什么?代码没有运行吗?数字文字与
开关的工作方式无关,实际数字是相同的。在你输入这个问题的时间内,你本可以尝试两次,但是没有……你使用什么都没有关系。是什么阻止你尝试?此外,C#中没有“十六进制值”。十六进制文字(例如,
0xFFFF
)被解释为
int
@havakok