2011-10-27 14 views
7

Tôi là một lập trình viên Java đang học C# những ngày này.Giao diện danh sách: từ Java đến C#

Thông thường trong Java khi sử dụng danh sách, nó phải là lập trình preferrable chống lại giao diện của nó để chuyển qua lại giữa hiện thực:

List<Object> list = new ArrayList<Object>(); 
//or 
list = new LinkedList<Object>(); 

gì về C#? Có tồn tại một cách tiếp cận tương tự? Ai đó có thể chỉ cho tôi một ví dụ? Kể từ bây giờ tôi đang xây dựng một danh sách theo cách này, nhưng tôi không nghĩ rằng Danh sách là một giao diện:

List<int> list = new List<int>(); 
list.Add(2); 

Trả lời

8

.NET cũng thích hợp hơn với đối tượng có thể cao nhất trong phân cấp. Bạn có thể sử dụng giao diện IList<T>:

IList<int> list = new List<int>(); 
list.Add(2); 

Và nếu bạn không cần phải truy cập vào danh sách bằng cách chỉ số bạn cũng có thể sử dụng giao diện ICollection<T> mà thậm chí còn cao hơn trong hệ thống phân cấp.

Hoặc nếu bạn chỉ muốn liệt kê qua danh sách, bạn có thể sử dụng giao diện cao nhất có thể đó là IEnumerable<T>:

IEnumerable<int> list = new List<int>(new[] { 1, 2, 3 }); 
foreach(int item in list) 
{ 
    ... 
} 
1
IList<int> = new List<int>(); 

trong C# thật dễ dàng - nếu nó bắt đầu với một I mình một giao diện.

1

List<T> triển khai một số giao diện, bao gồm IList<T>ICollection<T>. Bạn có thể cần phải kiểm tra mã của bạn để xác định giao diện nào là phù hợp nhất.

+0

cảm ơn .. bạn có thể giải thích sự khác biệt giữa IList và ICollection trong một vài từ không? – Heisenbug

+0

@Heisenbug - Tôi liên kết với tài liệu của họ và @Darin đã giải thích sự khác biệt chính - rằng một 'IList ' hỗ trợ truy cập được lập chỉ mục. –