Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#如果条件带有值检查_C#_If Statement - Fatal编程技术网

C#如果条件带有值检查

C#如果条件带有值检查,c#,if-statement,C#,If Statement,我正在为包含多个表达式的if条件寻找简短的编码样式 假设我想在字符串变量名str中添加if条件。 这是我的if条件 if(str == "a" || str == "b" || str == "c" || str == "d") 我想让这个如果条件短一些类似的东西 if(str == "a" || "b" || "c" || "d") 或 我不必一次又一次地输入str== 我知道,我可以通过多种方式做到这一点: 使用switch语句 制作字符串数组/列表并使用LINQ或Contains进行

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

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

if(str == "a" || str == "b" || str == "c" || str == "d")
我想让这个
如果
条件短一些类似的东西

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

我不必一次又一次地输入
str==

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

  • 使用switch语句
  • 制作字符串数组/列表并使用LINQ或Contains进行检查
我想做一些类似于
if(str==“a”| |“b”| |“c”| |“d”)
if(str在{“a”、“b”、“c”、“d”)中)


谢谢你的帮助

没有此类语法可用。这是对您的要求的简单回答

你可以遵循德米特里·拜琴科在评论中的建议

if (new [] {"a", "b", "c", "b"}.Contains(str)) { ... }
查看这些以了解更多详细信息:


您不能这样做。

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

所以
if(str==“a”)
检查
str==“a”
并基于
str
的值返回
true
false

但是当你在做

if(str==“a”| |“b”| |“c”| |“d”)

如果((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)
,此处无法将布尔值与int值进行比较,也无法提供布尔值结果

我想做一些类似于if(str==“a”| | |“b”| |“c”| |“d”)或if(str在{“a”、“b”、“c”、“d”)中)

正如我们所看到的,如果(str==“a”| |“b”| |“c”| |“d”)
,我们就不能执行

但是,如果您有权拥有一个包含所有字符串元素的
字符串列表
。您需要创建一个类级别(全局)列表并签入,如果条件允许,您可以执行以下操作

假设
元素列表
就是这样的列表


if(listofements.Contains(str))

根据@Dai,该解决方案在每次调用时都会导致额外的堆分配(对于数组),这会影响紧循环场景中的性能。@Saadi:当然,但将其提取到静态变量中非常容易,所以它只分配一次。@Saadi如果值是固定的,则可以在类级别声明该数组,如果值来自服务或数据库,则可以在类中一次性初始化该数组。这样就不会在每次通话中都有任何分配。在你问这个问题之前,仔细想想。这不是什么大问题。现在,所有的PC/笔记本电脑都有很好的内存,而您提出的问题不是企业级应用程序,您需要处理很多事情。希望你明白我的意思。谁和为什么被否决?我真的很想知道原因。它发现它没有取消否决票。给我一个合理的理由,写代码是一回事。以后维护和阅读它是另一回事。我更喜欢让事情易于理解和可读。与新数组相比,我更喜欢使用多个
str
。(我没有投反对票)
int a = 5, b = 6, c = 7;
if(a == b == c) //This is not valid statement
{
}