2012-09-09 16 views
8

Tôi là một lập trình viên Java, tôi đã sử dụng Java ArrayList trước và bây giờ tôi muốn có một cái gì đó như thế trong C#. Một số tùy chọn tôi cần là trong mã Java này:C# tương đương với java arraylist hỗ trợ lấy, thiết lập và loại bỏ chỉ số nhất định

String[] strs = new String[]{"str1" , "str2" , "str3" , "str4"}; 
ArrayList arrayList = new ArrayList(35); 
arrayList.add(strs[0]); 
arrayList.add(strs[1]); 
arrayList.remove(0); 
arrayList.set(0, strs[2]); 
String s = (String) arrayList.get(1); 

tôi đã sử dụng C# ArrayListLinkedList, nhưng họ không có các tùy chọn đơn giản mà tôi cần. Có một tùy chọn khác trong C# hỗ trợ truy cập các đối tượng với các chỉ mục, chèn và xóa khỏi chỉ mục nhất định không?

+2

Sử dụng 'Danh sách ', 'Danh sách [chỉ mục]' và ['List.RemoveAt'] (http://msdn.microsoft.com/en-us/library/5cw9x18z (v = vs.80) .aspx). –

Trả lời

13

sử dụng List <T>

String[] strs = new String[]{"str1" , "str2" , "str3" , "str4"}; 
List<string> stringList = new List<string>(); 
stringList.add(strs[0]); 
stringList.add(strs[1]); 
stringList.RemoveAt(indexYouWantToDelete)  
String s = stringList[0]; 

ArrayLists trong C# đến từ tho kỷ nguyên tiền chung. Vì C# 2.0, chúng tôi có các bộ sưu tập chung, List <T> là một ví dụ về điều đó. Khi nhận xét về câu trả lời này nói, nếu bạn sử dụng một ArrayList, các phần tử mà bạn đưa vào arraylist sẽ phải được đóng hộp (đến Object, bởi vì đó là điều duy nhất mà ArrayList lấy làm đầu vào). Nếu bạn muốn truy cập chúng sau đó, chúng sẽ phải được mở hộp một cách rõ ràng, giống như những gì bạn đã làm trong câu hỏi của mình. (->String s = (String) arrayList.get(1);)

sử dụng các bộ sưu tập chung (như List <T>), không còn quyền nào nữa, vì trình biên dịch biết được danh sách dữ liệu nào sẽ bao gồm. Trong trường hợp này, Strings. Bạn cũng có thể có List<int>, List<char> hoặc List<whatever> và bạn có thể sử dụng cùng chức năng lập chỉ mục trên chúng.

+2

nó có thể là giá trị chỉ ra rằng việc sử dụng 'ArrayList' là * không * khuyến khích vì nó là không chung chung và gây ra boxing. – Adam

+0

cảm ơn bạn! trước tiên tôi nghĩ rằng LinkedList là tiên tiến hơn so với danh sách thuần túy và tôi đã không lưu ý đến điều đó. – sajad

+0

@codesparkle yeah tôi sẽ làm điều đó. đã chỉnh sửa ngay bây giờ! – Thousand

0

Sử dụng List<T> ...........................................

trong đó có AddRemove, RemoveAt indexers như list[i], vv

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