简体   繁体   English

是否可以在类成员函数中使用switch语句并获取访问器?

[英]Is it possible to use switch statement inside class member function and get accessor?

Here is the class (relax, it's just an example and not intended for concrete use): 这是类(放松,它只是一个例子,并不打算具体使用):

public class Sample
{
    public Sample()
    {
    }

    public string Size
    {
        get
        {
            switch (index)
            {
                case 0: return 100;
                        break;
                case 1: return 500;
                        break;
                case 2: return 1000;
                        break;
                ...
            }
        }
    }
}

I am getting an "Unreachable code detected" error on the break keyword. 我在break关键字上收到“检测不到代码”错误。 Is it even possible to write switch statements inside a class or class member function? 甚至可以在类或类成员函数内编写switch语句吗? Or, am I stuck with if-else blocks? 或者,我是否坚持使用if-else块?

Based on the feedback below, I see I made a silly error, with return preceding the break 根据以下反馈,我看到我犯了一个愚蠢的错误,在休息之前返回了

The "unreachable code" warning is because your break statements are immediately following a return statement. “无法访问的代码”警告是因为您的break语句紧跟在return语句之后。 Therefore, the break is never executed. 因此,决不会执行该break

You are getting a unreachable code on the break because the code is unreachable. 由于代码无法访问,因此您在break收到了无法访问的代码。 The return ensures that. return确保了这一点。 You can just remove the break statements and everything should work fine. 您只需要删除break语句,一切就可以正常工作。

You can rewrite the switch in either of these two ways: 您可以通过以下两种方式之一重写开关:

switch(index)
{
  case 0: return 100;
  case 1: return 500;
  case 2: return 1000;
}

or 要么

int value = 0;
switch(index)
{
   case 0:
     value = 100;
     break;
   case 1:
     value = 500;
     break;
   case 2:
     value = 1000;
     break;
}
return value;

you can use a variable to save your number, after switch, you return variable. 您可以使用变量保存您的号码,切换后返回变量。

public class Sample
{
    public Sample()
    {

    }

    public string Size
    {
        get
        {
            int num=0;
            switch (index)
            {
                case 0: num= 100;
                    break;
                case 1: num= 500;
                    break;
                case 2: num= 1000;
                    break;
            }
            return num;
        }
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM