Python中的'in'运算符在C#中的等价物

15 投票
2 回答
4440 浏览
提问于 2025-04-16 11:53

在Python中,我可以使用'in'操作符来进行集合操作,像这样:

x = ['a','b','c']
if 'a' in x:
  do something

在C#中有什么类似的用法呢?

2 个回答

2

在这里,想要补充一下Ani的回答。Python中的in运算符在字典中相当于C#里的ContainsKey,所以你需要两个扩展方法:

public static bool In<T, V>(this T item, IDictionary<T, V> sequence)
{
    if (sequence == null) throw new ArgumentNullException("sequence");
    return sequence.ContainsKey(item);
}

public static bool In<T>(this T item, IEnumerable<T> sequence)
{
    if (sequence == null) throw new ArgumentNullException("sequence");
    return sequence.Contains(item);
}
27

大多数集合都有一个叫做 Contains 的方法(比如通过 ICollection<T> 接口),但还有一个更通用的LINQ方法,叫做 Enumerable.Contains

char[] x = { 'a', 'b', 'c' };

if(x.Contains('a'))
{
   ...    
}

如果你觉得这样有点不太对劲,你可以写一个扩展来解决这个问题:

public static bool In<T>(this T item, IEnumerable<T> sequence)
{
   if(sequence == null)
      throw new ArgumentNullException("sequence");

   return sequence.Contains(item);    
}

然后可以这样使用它:

char[] x = { 'a', 'b', 'c' };

if('a'.In(x))
{
   ...    
}

撰写回答