switch语句的case分支中的方法

时间:2014-09-20 17:50:35

标签: c# switch-statement

有没有一种方法可以像我在这段代码中那样直接使用某些方法?

string strLink = txtLink.Text;
switch(strLink)
{
     case strLink.StartsWith("www"):
          strLink = "http://www." + strLink.Substring(3);
          break;
     case !strLink.StartsWith("www"):
          strLink = "http://www." + strLink;
}

4 个答案:

答案 0 :(得分:0)

不,case语句的switch部分中的表达式应该是编译时常量或default。这可以是常量,枚举值或包含上述内容的表达式。

答案 1 :(得分:0)

不,遗憾的是switch语句中的C#规范非常有限。您正在寻找的可能是if...else if语法(可称不太好)string strLink = txtLink.Text; if (strLink.StartsWith("www")) { strLink = "http://www." + strLink.Substring(3); } else //if(!strLink.StartsWith("www")) this line is, of course, not necessary // since it's implied by the else, but that's // what it would be otherwise { strLink = "http://www." + strLink; } 。好的方法是:

{{1}}

答案 2 :(得分:0)

切换条件和大小写块之间不能使用不同的值类型。如果您只有两个案例,请使用if statement

    string strLink = txtLink.Text;
    if (strLink.StartsWith("www"))
    {
        strLink = "http://www." + strLink.Substring(3);
    }
    else
    {
        strLink = "http://www." + strLink;
    }

答案 3 :(得分:0)

不,但你可以这样做:

string strLink = txtLink.Text;
string firstThreeChars = strLink.Substring(0,3);

switch(firstThreeChars)
{
    case "www":
        strLink = "http://www." + strLink.Substring(3);
        break;
    default:
        strLink = "http://www." + strLink;
        break;
}

但是,在我看来,您的代码可能存在一些逻辑问题。如果txtLink.Text为www.google.com会怎样?您的输出不是http://www..google.com吗?

说了这么多,如果这是你唯一的两个案例,我会建议更像:

string strLink = "google.com";
string newLink = "http://" + (strLink.StartsWith("www.") ? strLink : "www." + strLink);