c# - Switch 语句性能 C#

标签 c# switch-statement

我们使用 switch 语句根据一系列条件对对象进行一些处理,并使用我们希望针对所有情况调用的默认情况。

我们对解决这个问题的最佳方式存在分歧。

我们中的一些人更喜欢示例 A:

switch (task)
{
    case A:
        ProcessA();
        goto default;
    case B:
        ProcessB();
        goto default;
    case C:
        ProcessC();
        goto default;
    default:
        Final();
}

而其他人建议最好使用示例 B 之类的东西:

switch (task)
{
    case A:
        ProcessA();
        break;
    case B:
        ProcessB();
        break;
    case C:
        ProcessC();
        break;
}

Final();

因为 Final() 无论如何都会被调用。

这是个人偏好的情况,还是存在客观的性能差异。

是否有任何我们应该注意的准则或问题?

这是用 C# 编写的 API,将被频繁调用。我们渴望把它做好!

干杯!

最佳答案

我会说坚持使用示例 B。

手动插入代码以“跳转”真的没有意义。尤其是当你在所有情况下都跳到同一个地方时。这就是代码块的用途。示例 B 读起来更好,也更容易理解。

至于性能,我不确定哪个会更快(衡量一下?)。但在这一点上,它看起来像是一个你不应该关心的微优化。在这个例子中,我会说可读性和可维护性胜过你可能获得的任何微小的性能提升。

关于c# - Switch 语句性能 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42832547/

相关文章:

c# - Convert.ToString 返回 string.empty 而不是 null

c# - 帮助我理解 c# 中的代码片段

performance - Switch 与 If-Else 性能

java - 如何将字符串切成两部分并将子字符串传递给不同的函数?

c# - 具有平滑循环的C#音频库?

c# - 我的将节点添加到二叉树的算法的缺陷在哪里?

swift - 我有抛出错误的错误吗?我应该怎么办?

c - 使用 #define 将字符串命令与 switch() 一起使用

javascript - switch 语句不起作用,只有第一种情况触发操作

c# - 将异步流写入 Azure Blob 存储