C#-有没有办法缩短“;如果(a.b==1||a.b==4||a.b==6)”;

本文关键字:有没有 如果 C#- | 更新日期: 2023-09-27 18:22:46

基本上我有一个对象,为了这个问题的目的,我称它为"a"。如果对象"a"的属性"b"是146中的任何一个(例如,但可能有更多合适的值),我想将其设置为8(例如)。现在我通常会做一些类似的事情

if( a.b == 1 || a.b == 4 || a.b == 6 ) 
    a.b = 8;

但我忍不住想,一定有更简单/更短的东西。我真的在寻找类似MSSQL in语法的东西(如果存在的话)-

SELECT
  *
FROM table
WHERE
  table.field IN (1, 4, 6)

我想我可以创建一个数组,填充它,然后检查它是否在if语句中包含我的值,但这只会导致与原始if语句几乎相同的代码量,并且仅为if创建数组变量感觉有点过头了-

int[] values = { 1, 4, 6 };
if(values.Contains(a.b))
    a.b = 8;

C#-有没有办法缩短“;如果(a.b==1||a.b==4||a.b==6)”;

在回答有关MSSQL IN类似语法的问题时,您能做的最短的事情是:

if (new[] {1, 4, 6}.Contains(a.b)) {
    a.b = 8;
}

然而,这段代码可能会带来更多的可读性问题,而不是改进。