C#如果有值的条件检查

我正在为if包含多个表达式的条件寻找简短的编码风格。

让我们假设,我想if在字符串变量 name 中添加条件str。这是我的if条件。

if(str == "a" || str == "b" || str == "c" || str == "d")

我想让这个if条件简短一些。

if(str == "a" || "b" || "c" || "d")

或者

if (str in {"a", "b", "c", "d"})

我不必str ==一次又一次地放。

我知道,我可以通过多种方式做到这一点:

  • 使用 switch 语句

  • 制作字符串数组/列表并使用 LINQ 或 Contains 进行检查。

我想做一些类似于if(str == "a" || "b" || "c" || "d")if (str in {"a", "b", "c", "d"})

感谢您的帮助!


白衣非少年
浏览 122回答 2
2回答

浮云间

你不可以做这个。通常在if语句中检查布尔类型。所以 if(str == "a")这会检查str == "a"并返回true或false基于 的值str。但是当你在做if(str == "a" || "b" || "c" || "d")你实际上在做什么 if( (str == "a") || ("b") || ("c") || ("d") )在这条指令中,第一部分是返回布尔值,但其他部分不返回布尔值,这对if语句无效。同样的方式你也不能跟随。int a = 5, b = 6, c = 7; if(a == b == c) //This is not valid statement { }这将是((a == b) == c),(a == b)结果为true或false。所以在第二部分检查将是,(true/false == c) , 这里你不能比较 Boolean 和 int 并且不能提供布尔结果。我想做一些类似于 if(str == "a" || "b" || "c" || "d") 或 if (str in {"a", "b", "c", "d"})正如我们所见,我们做不到if(str == "a" || "b" || "c" || "d")。但是,如果您可以自由拥有一个List of strings确实携带所有字符串元素的。您需要创建一个类级别(全局)列表并检查是否有条件,您可以执行以下操作。让我们说listOfElements你有这样的清单。if(listOfElements.Contains(str))

千万里不及你

有否提供这样的语法。这是对您的要求的简单回答。或者您可以按照Dmitry Bychenko在评论中的建议进行操作。if (new [] {"a", "b", "c", "b"}.Contains(str)) { ... }
打开App,查看更多内容
随时随地看视频慕课网APP