gpt4 book ai didi

c# - codeDom中的switch语句(跳表样式)

转载 作者:太空狗 更新时间:2023-10-29 23:40:08 25 4
gpt4 key购买 nike

我知道 switch 语句在 CodeDom 中不可用以及编译器如何处理 switch 语句。

所以当出现很多情况时出于性能原因,我不想使用 If-else
Why the switch statement and not 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]();
}

如果序列中存在空洞或列表稀疏,分析案例列表并生成数组的最佳方法是什么?

最佳答案

您可能想看看 The Roslyn Project用于代码分析。如果表很大而且特别稀疏,那么 if/else 可能会更好(给定现代 CPU 缓存)。 Roslyn 应该让您遍历 DOM 并获取然后可以排序的案例值(可能在单个 linq stmt 中)。我相信你的意思是在你上面的开关中有'break;'s。如果你实现这样的东西,我会非常仔细地测试它以确保它确实提高了性能。

关于c# - codeDom中的switch语句(跳表样式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13732126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com