2010-06-07 54 views
5

Tôi đang tìm một cái gì đó tương tự như List<T>, điều đó sẽ cho phép tôi có nhiều số T. Ví dụ: List<TabItem, DataGrid, int, string, ...> = new List<TabItem, DataGrid, int, string, ...>().Nhiều đối tượng trong danh sách, C#

+1

Bạn có muốn một danh sách chung có thể lưu trữ bất kỳ của những loại ... hay bạn muốn một danh sách chung có thể lưu trữ một nhóm các các loại (có nghĩa là, mỗi phần tử là một liên TabItem, DataGrid, int, string , vv)? –

+0

và lý tưởng ... bạn sẽ sử dụng hoặc tiêu thụ danh sách này như thế nào? Cấu trúc –

Trả lời

14

Nếu bạn đang sử dụng .NET 4, bạn có thể có một List<Tuple<T1, T2, ...>>

Nếu không, sự lựa chọn của bạn là thực hiện kiểu riêng của bạn .

+1

Bạn nhận được thông tin này khi tôi đang nhập câu trả lời. –

+0

Không cần danh sách >, chỉ cần Tuple là tốt. – Cheung

7

Tạo một lớp định nghĩa cấu trúc dữ liệu của bạn, và sau đó làm

var list = new List<MyClass>(); 
+0

sẽ tốt hơn so với lớp học. – Harsha

+1

@Harsha: Nếu bạn định đưa ra tuyên bố này, ít nhất hãy cho chúng tôi biết lý do tại sao. – AMissico

+0

hi, đây là liên kết cho biết cấu trúc tốt hơn lớp nhưng chỉ khi chúng chứa ít dữ liệu. đây là liên kết: http://social.msdn.microsoft.com/forums/en-US/Vsexpressvb/thread/6923cbe6-12b7-4e97-a4f5-3d9ebdfc75f2 – Harsha

1

Thông thường bạn chỉ cần có List<MyClass> trong đó MyClass có tất cả những người khác là thành viên.

1

Nếu nó có thể có bất kỳ loại cũ nào thì bạn cần sử dụng ArrayList.

Nếu bạn biết trước những gì bạn sẽ có trong đó, thì bạn nên tạo cấu trúc của riêng bạn hoặc sử dụng Tuple.

-1

Có vẻ như bạn đang theo dõi List<object>?

-1

Tuples là tốt nhất nếu bạn đang sử dụng .net 4.0. Nhưng nếu bạn đang làm việc 3.5 hoặc thấp hơn, mảng đối tượng đa chiều là tốt. Đây là mã. Tôi đã thêm 3 loại khác nhau vào một mảng đối tượng và tôi đã đẩy cùng một danh sách vào danh sách. Có thể không phải là giải pháp tốt nhất cho câu hỏi của bạn, có thể đạt được với mảng đối tượng và danh sách. Hãy xem mã.

class Program 
{ 
    static void Main(string[] args) 
    { 
     object[,] OneObject = new object[1,3]{ {"C Sharp",4,3.5 }}; 
     List<object> MyList = new List<object>(); 
     MyList.Add(OneObject); 
     object[,] addObject = new object[1,3]{{"Java",1,1.1}}; 
     MyList.Add(addObject); 

     foreach(object SingleObject in MyList) 
     { 
      object[,] MyObject = (object[,])SingleObject; 

      Console.WriteLine("{0},{1},{2}", MyObject[0, 0], MyObject[0, 1], MyObject[0, 2]); 
     } 

     Console.Read(); 
    } 
} 
-1

Thay vì thử trong C# 4, bạn có thể cung cấp tính năng phiên bản cũ ở đây.

Có vẻ như bạn không cần một bộ sưu tập được đánh máy mạnh ở đây, trong trường hợp đó ArrayList là tùy chọn tốt nhất.

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