2

a in [1, 2, 3]在 C# 中是否有相当于 python 的?

我试过new int[]{1, 2, 3}.Contains(a)了——这更难看,但也是如此。

当然,我也可以这样做,(a==1 || a==2 || a==3)但是使用不同的变量和命名空间,这也会变得有点笨拙。

4

1 回答 1

7

只是把它扔在那里并且完全未经测试。

public static bool In(this object obj, params object[] items)
{
    return items.Any(o => o.Equals(obj));
}

我认为扩展方法将是您正在寻找的,然后只需调整实际比较检查以满足您的需求。我选择了对象,所以它可以与任何东西一起使用,但如果你愿意,你可以更具体。

就这样称呼它:

if (4.In(1,2,3,4))
{
    // Do something
}

您可以将其更改为采用 IEnumerable,但如果您已经有一个,那么最好只在您的集合上调用 .Contains() 或 .Any()。

于 2013-05-22T02:41:17.180 回答