C# 如何使用开关盒(如有)?
我想在我的代码中像if一样使用switch,但我不知道如何使用&&以防万一! 这是我的密码C# 如何使用开关盒(如有)?,c#,if-statement,switch-statement,case,C#,If Statement,Switch Statement,Case,我想在我的代码中像if一样使用switch,但我不知道如何使用&&以防万一! 这是我的密码 string a; a = System.Convert.ToString(textBox1.Text); if (a.Contains('h') && a.Contains('s')) { this.BackColor=Color.Red; } else if (a.Contains('r') && a.Contains('z')) { this.Ba
string a;
a = System.Convert.ToString(textBox1.Text);
if (a.Contains('h') && a.Contains('s'))
{
this.BackColor=Color.Red;
}
else if (a.Contains('r') && a.Contains('z'))
{
this.BackColor=Color.Black;
}
else if (a.Contains('a') && a.Contains('b'))
{
this.BackColor = Color.Pink;
}
如果您可以使用更高版本的C#,您可以这样编写:
switch (st)
{
case var s when s.Contains("asd") && s.Contains("efg"):
Console.WriteLine(s);
break;
case var s when s.Contains("xyz"):
break;
// etc.
}
在您的特定情况下,不需要引入新的局部变量(s
),因此代码可以按如下方式编写
switch(st)
{
case var _ when st.Contains("asd") && st.Contains("efg"):
Console.WriteLine(st);
break;
case var _ when st.Contains("xyz"):
break;
// etc.
}
您可以在上阅读。如果您可以使用更高版本的C#您可以这样编写:
switch (st)
{
case var s when s.Contains("asd") && s.Contains("efg"):
Console.WriteLine(s);
break;
case var s when s.Contains("xyz"):
break;
// etc.
}
在您的特定情况下,不需要引入新的局部变量(s
),因此代码可以按如下方式编写
switch(st)
{
case var _ when st.Contains("asd") && st.Contains("efg"):
Console.WriteLine(st);
break;
case var _ when st.Contains("xyz"):
break;
// etc.
}
你可以在上阅读。顺便说一下,
textBox1.Text
已经是一个字符串了。不要费心在上面调用Convert.ToString()
。没有必要。Psst,@ed,你可以用c#7中的模式匹配来完成。我一定很困惑——我不知道模式匹配如何允许OP所寻找的。Sajad,你得到的是相当干净、可读的代码。“我看不出有什么必要改变它。”威尔:哦,废话。我刚看到时
。我认为模式匹配纯粹是他们添加到开关中的整个类型检查。这几个月过去了,我都不知道你还能加什么!顺便说一下,textBox1.Text
已经是一个字符串。不要费心在上面调用Convert.ToString()
。没有必要。Psst,@ed,你可以用c#7中的模式匹配来完成。我一定很困惑——我不知道模式匹配如何允许OP所寻找的。Sajad,你得到的是相当干净、可读的代码。“我看不出有什么必要改变它。”威尔:哦,废话。我刚看到时
。我认为模式匹配纯粹是他们添加到开关中的整个类型检查。这几个月过去了,我都不知道你还能加什么+1因为哇,很酷——但我认为这不是一个支持C中模式匹配的更好的论点,而Duff的设备支持C中的case fall-through。你可以通过使用var
来避免创建新变量,名为\uu
的变量总是一个很好的混淆接收器。/辛普森爷爷就是这么棒,做OP想要做的事。我仍然更喜欢if
语句。事实上,当添加了很多“when”子句来切换时,它很快就会比“if-else”链接看起来更糟糕。我会在一秒钟内用“35;”语法更新答案(似乎它与这个特定的问题相关)+1,因为哇,很酷——但我认为这不是一个支持C模式匹配的更好的论点,而Duff的设备支持C中的case fall-through。你可以通过使用var
来避免创建新变量,名为\uu
的变量总是一个很好的混淆接收器。/辛普森爷爷就是这么棒,做OP想要做的事。我仍然更喜欢if
语句。事实上,当添加了很多“when”子句来切换时,它很快就会比“if-else”链接看起来更糟糕。我将在一秒钟内用“u”语法更新答案(它似乎与这个特定问题相关)