我知道 switch 语句不可用CodeDom
以及编译器如何处理 switch 语句。
所以在很多情况下出于性能原因,我不想使用 If-else
为什么是 switch 语句而不是 if-else?
可以生成代码来模拟给定案例列表的跳转表。
switch(value) {
case 0: return Method0();
case 1: return Method1();
case 4; return Method4();
}
会产生:
private delegate object Method();
Method[] _jumpTable = new Method[] { Method0, Method1, null, null, Method4 };
private object GetValue(int value)
{
if (value < 0 || value > 4)
return null;
return _jumpTable[value]();
}
如果序列中有漏洞或列表稀疏,那么分析案例列表并生成数组的最佳方法是什么?