C#表达式等于多个值

Sto*_*orm 0 c# if-statement

我肯定答案是肯定的,但我很好奇,并且以为我会问你的女朋友.

在SQL中你可以说:

IF ( a IN ( x, y ) )
Run Code Online (Sandbox Code Playgroud)

C#中有类似的东西吗?我知道你可以使用一个开关,但我正在寻找if语句中特别可能的东西,因为有多个表达式,如:

IF ( a == b && c IN ( x, y ) )
IF ( a == b && c == ( x || y ) )
Run Code Online (Sandbox Code Playgroud)

编辑:好的,我看到我过于简单,因为数组示例相当明显,我没有想到它.如果它是更复杂的东西怎么样:

if ( a.GetType() == typeof( MyClass1 ) || a.GetType() == typeof( MyClass2 ) )
Run Code Online (Sandbox Code Playgroud)

Edit2:只是为了澄清,这不是一个C#IN运算符的副本吗?因为这个问题的答案并没有解决我的问题,因为我使用的例子可能有点差,但这是我当时唯一能想到的关系.Palani Kumar提供的答案就是我正在寻找的答案.

编辑3:感谢所有人的称重.很明显,有很多方法可以达到相同的结果(我现在也明白,它们几乎是同样的东西,只是表达方式不同)而且我已经能够阅读了由于您的意见,进一步进入每一个.我也设法找到这个"如果语句匹配多个值"的帖子,是的,我完全同意它也是我所要求的重复.根据反馈,我不仅学到了很多东西,还设法实现了一个优雅的解决方案:

public static bool In<T>( this T obj, params T[] list )
{
    return list.Contains( obj );
}
Run Code Online (Sandbox Code Playgroud)

fub*_*ubo 6

包含应符合您的需求

List<char> validChars = new List<char>() { 'x', 'y' };
char a = 'y';

if (validChars.Contains(a))
{
    //do sth.
}
Run Code Online (Sandbox Code Playgroud)

更新到更新的问题:处理Type而不是char

List<Type> validTypes = new List<Type>(){ typeof(MyClass1)  ,typeof( MyClass2 )};   
MyClass1 a = new MyClass1();  

if (validTypes.Contains(a.GetType()))
{
    //do sth.
}
Run Code Online (Sandbox Code Playgroud)

  • 另见http://stackoverflow.com/a/833477/1336590 (3认同)