Python';在';C#(.NET 2.0)中的等效运算符

本文关键字:运算符 NET Python | 更新日期: 2023-09-27 18:21:06

我喜欢蟒蛇in-operator,我想写它并在c#项目中使用它我只能访问.NET Framework 2.0。我正在使用下面的代码,但我不理解编译错误。

using System;
using System.Collections.Generic;
using System.Text;
public static bool In<T>(this T item, IEnumerable<T> sequence) {
    if (sequence == null)
        throw new ArgumentNullException("sequence");
    return sequence.Contains(item);
}

我也引用了System,但我得到了以下编译错误:

'System.Collections.Generic.IEnumerable<T>' does not contain a definition for 'Contains' and no extension method 'Contains' accepting a first argument of type 'System.Collections.Generic.IEnumerable<T>' could be found
(are you missing a using directive or an assembly reference?)

我不明白我可能缺少什么参考资料!

编辑:

在.NET framework 2.0中似乎没有Linq。因此,我下载并使用了以下软件包:http://www.albahari.com/nutshell/linqbridge.aspx它包括一个解决编译错误的CCD_ 3。

我想用以下代码测试它:

char[] x = { 'a', 'b', 'c' };
if('a'.In(x))
{
    ;   
}

但我遇到了令人困惑的错误:

'char' does not contain a definition for 'In' and no extension method 'In' accepting a first argument of type 'char' could be found
(are you missing a using directive or an assembly reference?)

编辑:一个干净的建筑解决了问题。

Python';在';C#(.NET 2.0)中的等效运算符

Contains静态方法在System.Linq.中定义

如果在文件顶部添加using System.Linq;行,则代码应该进行编译。

顺便说一句,Contains方法不是与Python的"in"运算符相同吗?创建一个自定义方法并没有带来多大好处,只是可以少键入几个字符/get来反转操作数。

如果您使用的是.NET 2.0,那么您可能可以调整本文中的一个方法来代替使用Linq。