【问题标题】:Using a switch statement to set the value of one particular variable only?使用 switch 语句仅设置一个特定变量的值?
【发布时间】:2012-06-26 09:14:39
【问题描述】:

有没有办法使用 switch 语句来设置在整个案例中使用的特定变量的值?目前如果值为 1,我希望变量为 1,如果值为 2,我希望变量为 2。我实际上只是通过以下方式做到这一点:

Int variable = value;

..但是,为了将来参考更复杂的示例,我想知道是否有办法。 (当前获取变量已定义错误)。

  switch (value)
        {
            case 0:
                int Variable = 0;
                break;
            case 1:
                int Variable = 1;
                break;
            case 2:
                int Variable = 2;
                break;
            case 3:
                int Variable = 3;
                break;
            case 4:
                int Variable = 4;
                break;
        }

【问题讨论】:

  • switch 中的所有案例都在同一范围内。只需将您的变量声明放在它之外并正常分配给它。
  • 啊,很明显,现在你指出来了,我一遍又一遍地声明变量,非常感谢!
  • 你的报酬是按你写的代码行数吗?
  • 1 行时使用 20 行似乎有点奇怪。
  • 我正在使用 1 行代码...你在问什么?

标签: c# .net


【解决方案1】:

哈希表或字典怎么样。我想这很麻烦,但可读性很强。

想法来自here

Dictionary<string, int> numbers = new Dictionary<string, int>(){
    {"zero", 0},
    {"one", 1},
    {"two", 2},
    {"three", 3},
    {"four", 4},
    {"five", 5},
    {"size", 6}
};

int Variable = numbers[value];

【讨论】:

    【解决方案2】:

    如果您在 swtich 之外声明变量,您将不会收到“变量已定义”错误。发生这种情况是因为 switch 内的所有内容都在同一范围内。

    例子:

    int Variable = -1;
    
    switch (value)
    {
            case 0:
                Variable = 0;
                break;
            case 1:
                Variable = 1;
                break;
            case 2:
                Variable = 2;
                break;
            case 3:
                Variable = 3;
                break;
            case 4:
                Variable = 4;
                break;
    }
    

    【讨论】:

    • 一个else 子句将是处理任何意外值的一个有价值的补充。一种可能的替代方法是使用可为空的类型,例如int? Variable;.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-11
    • 1970-01-01
    • 2012-09-17
    • 1970-01-01
    • 2013-12-31
    相关资源
    最近更新 更多