Python中的'in'运算符在C#中的等价物
在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))
{
...
}