lda*_*dam 7 c# runtime constants switch-statement language-lawyer
我很清楚 C# 不允许块readonly中的字段switch,这就是这个问题所解决的问题。
我想了解为什么会出现这种情况。这只是一个任意的语言规范怪癖,还是背后有技术原因?如果有,技术原因是什么?
让我澄清一下,我理解const和之间的区别readonly,并且我知道 C#switch需要const值,或者在编译时已知的值。对我来说,从功能上来说,使用一堆if..else if语句与使用一条语句具有相同的结果switch,因为无论我能用一条switch语句做什么,我也可以用 an 实现if,例如:
const int MyConstantValue = 10;
int myCompareValue = 3;
if(myCompareValue == MyConstantValue)
{
//...
}
else
{
//...
}
switch(myCompareValue)
{
case MyConstantValue:
//...
break;
default:
//...
break;
}
Run Code Online (Sandbox Code Playgroud)
这两个构造具有相同的结果:执行elseor块,但可以在没有编译时常量或已知值的情况下执行此操作。为什么一个人可以做到而一个人却做不到?defaultififswitch
原因是 C# 开关是在 C/C++ 开关之后建模的,它们具有相同的约束。
造成这种限制的原因有两个:
| 归档时间: |
|
| 查看次数: |
1785 次 |
| 最近记录: |