条件测试,如果整数等于一组已知的整数常量C#

时间:2012-04-03 18:21:04

标签: .net c#-4.0

我正在尝试编写一个条件来确定未知整数'a'是否等效于一组已知常数x,y或z。在某些语言中,如delphi,可以按如下方式完成:

if (a in [x, y, z]) then
begin
   //do something
end;

然而,我在C#工作,所以这不起作用。有明显的方法可以做到,但我一直无法找到一种等效的简单方法,并且想知道是否存在。

提前感谢任何建议。

2 个答案:

答案 0 :(得分:3)

您可以使用:

if (new[] { x, y, x }.Contains(a))

(请注意,这需要 对象的LINQ和using using System.Linq;指令或ICollection<int>进行丑恶的转换。)

或者更好的是,只需创建一次,例如

private static readonly HashSet<int> ValidValues = new HashSet<int> { 1, 2, 3 };

...

if (ValidValues.Contains(a))

如果元素的数量相当小,那么实际上数组可能比HashSet更快:

private static readonly int[] ValidValues = { 1, 2, 3 };

如果您不相信自己不在课堂上修改它,请将其包装在只读集合中。

答案 1 :(得分:2)

如果您正在使用LINQ,那么这应该适合您:

if (new[] { x, y, z }.Contains(a))

如果您没有使用LINQ,那么这也是等同的:

if (-1 != Array.IndexOf(new[] { x, y, z }, a))