Python 'in' оператор, эквивалентный С#
С Python я могу использовать оператор "in" для операции установки следующим образом:
x = ['a','b','c']
if 'a' in x:
do something
Что эквивалентно в С#?
Ответы
Ответ 1
Большинство коллекций объявляют метод 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))
{
...
}
Ответ 2
Чтобы построить на Ani ответ, оператор Python in
для словарей является эквивалентом 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);
}