代码之家  ›  专栏  ›  技术社区  ›  climivin

如何从开关返回结果?

c#
  •  0
  • climivin  · 技术社区  · 6 年前

    switch 返回结果 return ?

    我得到一个错误:

    public string Method1(string str_1)
            {
                string s1;
    
                switch (str_1)
                {
                    case "type_1":
                        s1 =  MethodTest();                    
                        break;
                }
    
                return s1;
            }
    
    
            public string MethodTest()
            {
                string s = "test";
    
                return s;
            }
    

    enter image description here

    5 回复  |  直到 6 年前
        1
  •  3
  •   VitezslavSimon    6 年前

    没错。切换不一定会导致使用您的一个案例。

    需要执行以下两个更改之一:

    1)

    string s1 = string.Empty; //(provide default value)
    

    switch (str_1)
    {
      /*...*/
      default:
        s1 = "...";
        break;
    
        2
  •  2
  •   Joe Phillips    6 年前

    string s1 = string.Empty string s1 = null

    它抱怨说,由于无法保证switch case语句会被命中,所以该值可能无法设置。

        3
  •  2
  •   Nathan Werry    6 年前

    s1 可能从未设置为某个值。如果在声明字符串时将其设置为默认值,则错误将消失:

    string s1 = string.Empty;
    
        4
  •  1
  •   GoldenAge    6 年前

    我看到4种选择:

    1) string s1= string.Empty;

    2) string s1= null;

    string s1="";

    4) 您可以进行一个小的重构:

    public string Method1(string str_1)
    {
        switch (str_1)
        {
            case "type_1":
                return MethodTest();
            default:
                return string.Empty;
        }
    }
    
        5
  •  0
  •   Belurd    6 年前

    可以避免使用局部变量。只要决定在默认情况下您将返回什么。

    public string Method1(string str_1)
    {
        switch (str_1)
        {
            case "type_1":
                return MethodTest();
            default:
                return null;
        }
    }