【发布时间】:2015-10-18 22:29:27
【问题描述】:
我确定答案是否定的,但我很好奇,并想我会问你们这些研究人员来确定一下。
在 SQL 中你可以说:
IF ( a IN ( x, y ) )
C#中有类似的东西吗?我知道你可以使用 switch,但我正在寻找 if 语句中特别可能的东西,因为它有多个表达式,例如:
IF ( a == b && c IN ( x, y ) )
IF ( a == b && c == ( x || y ) )
编辑:好的,我看到我过于简化了,因为数组示例相当明显,我没有考虑清楚。如果它是更复杂的东西怎么样:
if ( a.GetType() == typeof( MyClass1 ) || a.GetType() == typeof( MyClass2 ) )
Edit2:澄清一下,这不是 Is there a C# IN operator? 的重复,因为该问题的答案并没有解决我的问题,因为我使用的示例可能有点差,但这是我能想到的唯一关系当时。 Palani Kumar提供的答案就是我一直在寻找的答案。
Edit3:感谢大家的参与。很明显,有很多方法可以达到相同的结果(我现在也明白,它们几乎是相同的东西,只是表达方式不同),我一直由于您的输入,能够进一步阅读每一个。我还设法找到了this "if statements matching multiple values" 帖子,是的,我完全同意它也与我所问的内容重复。根据反馈,我不仅学到了很多东西,而且还设法实施了一个优雅的解决方案:
public static bool In<T>( this T obj, params T[] list )
{
return list.Contains( obj );
}
【问题讨论】:
-
例如
c的类型是什么? -
公平地说,我认为@PalaniKumar 的答案实际上与标记副本中的答案相同。创建集合并使用
.Any本质上与创建数组并使用.Contains相同。 -
@MattBurland 谢谢马特,我昨晚也反思了它,它确实开始有意义了。在我提出问题后,我确实找到了一些相关材料,但在此之前,当我进行大量搜索时,我找不到任何东西,这就是为什么我认为答案是否定的,因此我问了
-
@MattBurland 和 Storm .Contains 不适用于所有情况,但 .Any 可以。例如,在我的回答中,“Sample2”不适用于 .Contains。 .Contains 也不能忽略大小写敏感,但 .Any 可以。所以它与标记副本中的答案不同:)
-
@PalaniKumar 哇,这是一些有趣的东西,肯定会阅读更多内容。谢谢!
标签: c# if-statement