Python的'in'运算符相当于C#

pro*_*eek 14 c# python operators

使用Python,我可以使用'in'运算符进行set操作,如下所示:

x = ['a','b','c']
if 'a' in x:
  do something
Run Code Online (Sandbox Code Playgroud)

C#中的等价物是什么?

Ani*_*Ani 22

大多数集合声明了一个Contains方法(例如通过ICollection<T>接口),但总是有更通用的LINQ Enumerable.Contains方法:

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

if(x.Contains('a'))
{
   ...    
}
Run Code Online (Sandbox Code Playgroud)

如果你认为这是'错误的方式',你可以写一个纠正事情的扩展:

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

   return sequence.Contains(item);    
}
Run Code Online (Sandbox Code Playgroud)

并将其用作:

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

if('a'.In(x))
{
   ...    
}
Run Code Online (Sandbox Code Playgroud)

  • 或者`ContainsKey`如果`x`是字典. (2认同)
  • @David Heffernan:这是一个选项,但在.NET中,容器类型的`null`引用通常用于表示容器本身的*缺少*而不是*empty*容器.如果我们假设这个惯例; 第二个参数为null确实是一个错误. (2认同)