c# - 使用名称中的参数调用函数

标签 c# function parameters

我可以把所有这些代码放在一行中吗,比如“Level + index()”可以吗?

我有这个开关功能:

switch(index)
    {
        case 1:
        Level1();
        break;
        case 2:
        Level2();
        break;
        case 3:
        Level3();
        break;
        case 4:
        Level4();
        break;
        case 5:
        Level5();
        break;
    }

如您所见,每个索引调用一个名为“Level”和索引编号的函数。

最佳答案

不是那样的,不。您可以使用委托(delegate):

// Ideally make this a readonly field.
Action[] actions = { Level1, Level2, Level3, Level4, Level5 };
...
actions[index - 1]();

或者您可以使用反射,正如其他人提到的那样...但我会尽可能避免这种情况,尤其是在性能受到关注的情况下。

虽然它确实感觉像是一个奇怪的设计 - 我会退后一步并考虑是否有一种更简洁的设计方法来开始。 (目前我们很难在没有更多上下文的情况下提供帮助。)

关于c# - 使用名称中的参数调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19159247/

相关文章:

c - 如何使用函数求矩阵中的最大元素?

php - 如何正确制作以PHP变量为参数的PDO语句?

arrays - 向函数传递多个参数,一个是数组,另一个是带空格的变量

javascript - 使用带有一个附加参数的函数的 map() 的 JS 回调

c# - 如何解决错误 : Inconsistent accessibility: parameter type for generic c# interface?

c# - 带更新查询的 Linq

php - 如果...否则发出 : removing the matched variable

javascript - getElementsByClassName 不返回任何内容

c# - 我想创建一个程序,返回基本的 AzureAD 信息,而不将其绑定(bind)到一个租户

c# - 将结构编码(marshal)到指针时出现 "Attempted to read of write protected memory..."错误