Python 的“in”相当于 C# 的运算符

发布于 2024-10-17 16:53:38 字数 135 浏览 3 评论 0原文

使用 Python,我可以使用“in”运算符进行集合操作,如下所示:

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

C# 中的等效项是什么?

With Python, I can use 'in' operator for set operation as follows :

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

What's the equivalent in C#?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

墨落成白 2024-10-24 16:53:38

大多数集合都声明 Contains 方法(例如通过 ICollection 接口),但总有更通用的 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))
{
   ...    
}

Most collections declare a Contains method (e.g. through the ICollection<T> interface), but there's always the more general-purpose LINQ Enumerable.Contains method:

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

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

If you think that's the 'wrong way around', you could write an extension that rectifies things:

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

   return sequence.Contains(item);    
}

And use it as:

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

if('a'.In(x))
{
   ...    
}
淑女气质 2024-10-24 16:53:38

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

To build on Ani's answer, Python's in operator for dictionaries is the equivalent of ContainsKey in C#, so you would need two extension methods:

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);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文