今天发现一个怪问题,同样是.net3.5环境下的两个项目,一个里支持arr.contains(1),一个就不支持,代码完全相同也不行.有时在不支持项目里加新文件支持,但有时又不支持,发现在支持的项目里contains的注释是<extension方法,但是查不出在哪定义的.在网上查到一段代码,虽然和这不太一样,但是可以使数组使用contains数组有Contains方法,在.NET Framework 2.0 版中,Array 类实现ICollection<T接口,但必须如下书写代码:1.string[] ss =newstring[] {1,2};2.boolb = (ssasICollection<string).Contains(1);MSDN中说明如下:在.NET Framework 2.0 版中,Array 类实现 System.Collections.Generic.IList<T、System.Collections.Generic.ICollection<T 和 System.Collections.Generic.IEnumerable<T 泛型接口。由于实现是在运行时提供给数组的,因而对于文档生成工具不可见。因此,泛型接口不会出现在 Array 类的声明语法中,也不会有关于只能通过将数组强制转换为泛型接口类型(显式接口实现)才可访问的接口成员的参考主题。将某一数组强制转换为这三种接口之一时需要注意的关键一点是,添加、插入或移除元素的成员会引发NotSupportedException。下例的第二种方法是上文里讲到的三种方法之一.(1) 第一种方法:int[] ia = {1,2,3};int id = Array.IndexOf(ia,1);// 这里的1就是你要查找的值if(id==-1)// 不存在else// 存在(2) 第二种方法:string[] strArr = {a,b,c,d,e};bool exists = ((IList)strArr).Contains(a);if(exists)// 存在else// 不存在注意:用IList需要
温馨提示:答案为网友推荐,仅供参考