2010-06-24 30 views
5

如何從c#中的arraylist中檢索對象及其成員。如何從c#中的arraylist中檢索對象#

+0

如果您習慣了Java,您可能不會知道ArrayList與Java中的不一樣。 C#列表中還有許多其他收集類型。例如,是類型安全的。 – 2010-07-29 15:45:17

回答

15

您的意思是這樣的?

ArrayList list = new ArrayList(); 
YourObject myObject = new YourObject(); 

list.Add(myObject);  

YourObject obj = (YourObject)list[0]; 

要遍歷:

foreach(object o in list) 
{ 
    YourObject myObject = (YourObject)o; 
    ....... 
} 

信息ArrayList

2

這裏是被填充了一個新的KeyValuePair對象的簡單的ArrayList的例子。然後我將對象從ArrayList中取出,將其重新轉換爲其原始類型並訪問它的屬性。

var testObject = new KeyValuePair<string, string>("test", "property"); 
var list = new ArrayList(); 
list.Add(testObject); 
var fetch = (KeyValuePair<string, string>)list[0]; 
var endValue = fetch.Value; 
0

您也可以使用擴展方法:

ArrayList list = new ArrayList(); 
// If all objects in the list are of the same type 
IEnumerable<MyObject> myenumerator = list.Cast<MyObject>(); 
// Only get objects of a certain type, ignoring others 
IEnumerable<MyObject> myenumerator = list.OfType<MyObject>(); 

或者,如果你不使用的.Net的更新版本,檢查對象類型,並投用的就是/爲

list[0] is MyObject; // returns true if it's an MyObject 
list[0] as MyObject; // returns the MyObject if it's a MyObject, or null if it's something else 

編輯:但如果您使用的是較新版本的.Net ...

我強烈建議您使用系統中的通用集合.Collections.Generic

var list = new List<MyObject>(); // The list is constructed to work on types of MyObject 
MyObject obj = list[0]; 
list.Add(new AnotherObject()); // Compilation fail; AnotherObject is not MyObject 
3
object[] anArray = arrayListObject.ToArray(); 
    for(int i = 0; i < anArray.Length; i++) 
     Console.WriteLine((MyType)anArray[i]).PropertyName); 
+0

我提出這個簡單的建議,因爲這個用戶將他的問題標記爲初學者。一旦OP瞭解ArrayList,他就可以轉向泛型,只專注於學習泛型。 – 2010-06-24 17:43:29

1

您應該使用這個泛型集合。使用通用的ArrayList,所以當您試圖將它從數組中取出時,您不必轉換對象。

+0

這是c#。不是Java。 – 2017-09-23 01:19:22