System.Array并不包含Contains的定义

jack2312 2010-03-31 12:32:41
编译的时候说是array没有contains的定义,
代码如下:
if (!paramNames.Contains<string>("p01_service") ||
!paramNames.Contains<string>("p02_out_ordercode") ||
!paramNames.Contains<string>("p03_payamount") ||
!paramNames.Contains<string>("p04_sitecode") ||
!paramNames.Contains<string>("p05_subject") ||
!paramNames.Contains<string>("p06_body") ||
!paramNames.Contains<string>("p07_price") ||
//接受响应没有p09_notify_url参数
!paramNames.Contains<string>("p08_quantity") ||
!paramNames.Contains<string>("p10_note") ||
!paramNames.Contains<string>("p11_status") ||
!paramNames.Contains<string>("p12_ordercode") ||
!paramNames.Contains<string>("sign"))
...全文
1979 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
dengtianyoulu 2011-07-27
  • 打赏
  • 举报
回复
嘿嘿,我的问题也解决了。谢谢8楼的。
riddleleo 2011-04-27
  • 打赏
  • 举报
回复
你好,请问你是如何解决的?我在一个项目里可以使用system.Linq,而在另一个项目却提示不可以,这个项目是有05转换成08的。
jack2312 2010-04-05
  • 打赏
  • 举报
回复
谢谢大家,问题早解决啦,呵呵!
jack15850798154 2010-04-01
  • 打赏
  • 举报
回复
今天发现一个怪问题,同样是.net3.5环境下的两个项目,一个里支持arr.contains("1"),一个就不支持,代码完全相同也不行.有时在不支持项目里加新文件支持,但有时又不支持,发现在支持的项目里contains的注释是<extension>方法,但是查不出在哪定义的.

在网上查到一段代码,虽然和这不太一样,但是可以使数组使用contains

数组有Contains方法,在.NET Framework 2.0 版中,Array 类实现ICollection<T>接口,但必须如下书写代码:


1.string[] ss = new string[] { "1", "2" };
2.bool b = (ss as ICollection<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。



下例的第二种方法是上文里讲到的三种方法之一.

C#中怎么判断一个数组中是否存在某个数组值

(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需要using System.Collections;

  • 打赏
  • 举报
回复
都2010年了,开发环境还不升级一下?
  • 打赏
  • 举报
回复
在.net framework3.0以上,必须:
using System.Linq;
jack2312 2010-04-01
  • 打赏
  • 举报
回复
情况是这样的我下载的壹支付c#开发包做一个支付接口,它里面包含得有这段代码,在编译的时候就出现这个错误,原本它开发接口代码里面是可以编译的,但是在VS2005里面编译的时候就会出错!另外我查询了一下System.Array中没有Contains的定义,所以一时不知道如何是好,还忘各位鼎立相助,非常感谢!
段传涛 2010-03-31
  • 打赏
  • 举报
回复
你用是泛型(委托) 是吧。
你用什么平台, 这不可能啊。
丰云 2010-03-31
  • 打赏
  • 举报
回复
你的开发平台是什么??
paramNames是什么类型??
Peter200694013 2010-03-31
  • 打赏
  • 举报
回复
paramNames是什么类型?

//System.Array中没有Contains方法。

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧