gpt4 book ai didi

c# - 我可以将 switch 语句与 string.Contains() 结合使用吗?

转载 作者:行者123 更新时间:2023-11-30 20:21:51 30 4
gpt4 key购买 nike

我有一个方法使用一长串 if/elseif 语句(大约 10-15 个),我知道当你超过大约 5 个 if/else if 语句时,最好使用 switch。话虽如此,我不确定我是否可以在我的案例中使用 switch 语句,因为我的 if/else if 语句依赖于测试字符串,而不是为了相等,而是使用 Contains() 方法。所以,现在我有一些等同于

string s = "ABCD";
if(s.Contains("A")
{
//do stuff
}
else if(s.Contains("E")
{
//do different stuff
}
etc ...

我尝试了不同的方式来实现 switch 语句,例如

switch()
{
case(s.Contains("A"))
{
//do stuff
}
}

但我尝试过的每一种方法都会导致语法错误。

有没有办法在使用 Contains() 方法测试字符串的同时使用 switch 语句?

最佳答案

不,switch 语句需要 case 标签的常量值。所以一般来说,最好还是坚持使用 if 语句。但这与在您的场景中使用 switch 语句差不多。

string myString = "ABC";
List<string> subStrings = new List<string>{"A", "B", "C"};
switch (subStrings.FirstOrDefault(myString.Contains))
{
case "A":
Console.WriteLine("Has A");
break;
case "B":
Console.WriteLine("Has B");
break;
case "C":
Console.WriteLine("Has C");
break;
default:
Console.WriteLine("No ABC");
break;
}

我怀疑这会比 if 语句快,因为 FirstOrDefault 基本上做同样的事情,它破坏了 DRY 原则,因为它需要更新列表和 switch 语句。

关于c# - 我可以将 switch 语句与 string.Contains() 结合使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32955521/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com