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?)
编辑:一个干净的建筑解决了问题。
Contains
静态方法在System.Linq.中定义
如果在文件顶部添加using System.Linq;
行,则代码应该进行编译。
顺便说一句,Contains方法不是与Python的"in"运算符相同吗?创建一个自定义方法并没有带来多大好处,只是可以少键入几个字符/get来反转操作数。
如果您使用的是.NET 2.0,那么您可能可以调整本文中的一个方法来代替使用Linq。