我肯定答案是肯定的,但我很好奇,并且以为我会问你的女朋友.
在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)
包含应符合您的需求
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)
| 归档时间: |
|
| 查看次数: |
157 次 |
| 最近记录: |