繁体   English   中英

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

[英]Python's 'in' operator equivalent to C#

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

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

C#中的等价物是什么?

大多数集合声明一个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))
{
   ...    
}

要建立在安仁的回答,Python的in运营商的字典中的等价ContainsKey在C#,所以你需要两个扩展方法:

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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM