2010-06-24 48 views
5

Cách truy xuất Object và thành viên của nó từ danh sách mảng trong C#.Cách truy xuất Object từ danh sách mảng trong C#

+0

Nếu bạn quen với Java, bạn có thể không biết rằng ArrayList không giống như trong Java. Có nhiều loại bộ sưu tập khác trong C# List là loại an toàn cho ví dụ. –

Trả lời

15

Ý bạn là như thế này?

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

list.Add(myObject);  

YourObject obj = (YourObject)list[0]; 

Để lặp qua:

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

Thông tin về ArrayList

2

Dưới đây là một ví dụ về một ArrayList đơn giản được dân cư với một đối tượng KeyValuePair mới. Sau đó tôi kéo đối tượng ra khỏi ArrayList, đưa nó trở về kiểu ban đầu của nó và truy cập thuộc tính của nó.

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

Bạn cũng có thể sử dụng phương pháp khuyến nông:

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>(); 

Hoặc nếu bạn không sử dụng một phiên bản mới hơn của Net, rà soát các loại đối tượng và đúc sử dụng là/như

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 

Chỉnh sửa: Nhưng nếu bạn đang sử dụng phiên bản mới hơn của .Net ...

Tôi khuyên bạn nên sử dụng bộ sưu tập Chung trong Hệ thống .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

Tôi đưa ra đề xuất đơn giản này vì người dùng này đã đánh dấu câu hỏi của anh ấy là người mới bắt đầu. Khi OP hiểu ArrayList, anh ta có thể chuyển sang Generics và chỉ tập trung vào việc học Generics. –

1

Bạn nên sử dụng bộ sưu tập chung cho việc này. Sử dụng ArrayList chung để bạn không phải cast đối tượng khi bạn đang cố gắng lấy nó ra khỏi mảng.

+0

Đây là C#. Không phải Java. –

Các vấn đề liên quan