相关疑难解决方法(0)

C#switch语句中的变量声明

为什么在C#switch语句中,对于在多种情况下使用的变量,您只在第一种情况下声明它?

例如,以下引发错误"已在此范围中定义名为'variable'的局部变量".

switch (Type)
{
    case Type.A:
            string variable = "x";
                break;
    case Type.B:
            string variable = "y";
                break;
}
Run Code Online (Sandbox Code Playgroud)

但是,根据逻辑,如果类型为,则不应该触发初始声明Type.B.switch语句中的所有变量是否都存在于单个作用域中,是否在处理任何逻辑之前创建/分配它们?

c# switch-statement

117
推荐指数
4
解决办法
5万
查看次数

为什么C#允许在一个案例之后但不在它之前的语句?

为什么C#允许这样:

var s = "Nice";
switch (s)
{
    case "HI":
        break;
    const string x = "Nice";
    case x:
        Console.Write("Y");
        break;
}
Run Code Online (Sandbox Code Playgroud)

但不是这个:

var s = "Nice";
switch (s)
{
    const string x = "Nice";
    case x:
        Console.Write("Y");
        break;
}
Run Code Online (Sandbox Code Playgroud)

.net c# switch-statement

64
推荐指数
2
解决办法
2168
查看次数

C#switch variable initialization:为什么这段代码不会导致编译错误或运行时错误?

...
case 1:
   string x = "SomeString";
   ...
   break;
case 2:
   x = "SomeOtherString";
   ...
   break;
...
Run Code Online (Sandbox Code Playgroud)


有没有我不了解C#中的switch语句?为什么在使用案例2时这不是错误?
编辑:此代码有效,不会抛出错误.

c# switch-statement

8
推荐指数
2
解决办法
2418
查看次数

为什么C#不允许在switch语句的不同case块中声明具有相同编号的变量?

可能重复:
C#中的Case语句块级别声明空间

例如:

string danger;
switch ( this.Type )
{
    case Warfare.Nuclear:
    case Warfare.Biological:
    case Warfare.Chemical:
        danger = "deadly";
        break;

    case Warfare.Air:
        string threat = "major"

        ...

        break;

    case Warfare.Ground:
        string threat = "medium"

        ...

        break;
}
Run Code Online (Sandbox Code Playgroud)

为什么我不能只在每个变量中定义具有相同名称的局部变量,而不必使用不同的名称或在switch语句之外声明变量,这些变量不会在其外部使用.

.net c# switch-statement

2
推荐指数
1
解决办法
731
查看次数

标签 统计

c# ×4

switch-statement ×4

.net ×2