我正在尝试编写一个条件来确定未知整数'a'是否等效于一组已知常数x,y或z。在某些语言中,如delphi,可以按如下方式完成:
if (a in [x, y, z]) then
begin
//do something
end;
然而,我在C#工作,所以这不起作用。有明显的方法可以做到,但我一直无法找到一种等效的简单方法,并且想知道是否存在。
提前感谢任何建议。
答案 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))