(轉)數組使用contains


數組使用contains

今天發現一個怪問題,同樣是.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;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM