C#如果条件有值检查

时间:2018-05-10 08:33:00

标签: c# if-statement

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

我们假设,我想在字符串变量名if中添加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"})

的事情

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

NO 此类语法可用。这是您要求的简单答案。

OR

您可以关注评论中建议的 Dmitry Bychenko

if (new [] {"a", "b", "c", "b"}.Contains(str)) { ... }

检查这些以获取更多详细信息:

C# syntax shorthand for multiple condition testing

Test for multiple values in an if statement in C#

答案 1 :(得分:1)

你不能这样做。

通常在if语句中检查布尔类型。

所以 if(str == "a")这会检查str == "a",并根据true的值返回falsestr

但是在你做的时候

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)会产生truefalse。所以在第二部分检查将是,

(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))