为了账号安全,请及时绑定邮箱和手机立即绑定

C#如果有值的条件检查

C#如果有值的条件检查

C#
白衣非少年 2021-06-03 15:09:14
我正在为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"})感谢您的帮助!
查看完整描述

2 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

你不可以做这个。

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

所以 if(str == "a")这会检查str == "a"并返回truefalse基于 的值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)结果为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))


查看完整回答
反对 回复 2021-06-05
?
千万里不及你

TA贡献1784条经验 获得超9个赞

提供这样的语法。这是对您的要求的简单回答。

或者

您可以按照Dmitry Bychenko在评论中的建议进行操作。

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


查看完整回答
反对 回复 2021-06-05
  • 2 回答
  • 0 关注
  • 101 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信