2013-02-05 43 views
6

Tôi cần phải tạo các cặp/bộ ba của một cái gì đó và lưu trữ ở đâu đó. Tôi làm nó như thế nào?Danh sách các loại ẩn danh?

tôi đã cố gắng:

for (int i = 0; i < 100; i++) 
{ 
    var item=new { a=i , b="lala" ,c=4.5m}; //anonymous type 
} 

Nhưng sau đó tôi nghĩ: List<what>?

Tôi có thể sử dụng động nhưng tôi muốn Intellisense.

(tôi có thể có cũng sử dụng Tuple<int,string,decimal> nhưng nếu tôi đã có những gì tôi cần (=new { a=i , b="lala" ,c=4.5m};), tại sao tôi nên sử dụng loại khác (tuple)?)

Có bất kỳ giải pháp này?

+0

Có "thứ gì đó" xuất phát từ giao diện hay lớp học không? – daryal

+0

không. Tôi tạo ra nó trên bay. (như trong mẫu của tôi) –

+0

Bạn có muốn tạo danh sách loại ẩn danh không? –

Trả lời

14

Bạn có thể sử dụng loại suy luận

var items = Enumerable.Range(0,100) 
         .Select(i => new { a=i , b="lala", c=4.5m }) 
         .ToList(); // not necessary (you can use IEnumerable) 
+0

Danh sách đã ngăn chặn vấn đề var đã chụp. –

+0

@RoyiNamir xin lỗi, không hiểu ý của bạn là gì * bị bắt lỗi var *. Nếu bạn muốn sử dụng các mục nhiều lần, thì tốt hơn là sử dụng 'ToList()' hoặc 'ToArray()'. Nếu bạn sẽ lặp lại một lần trên các mục, sau đó chỉ cần sử dụng 'IEnumerable ' của loại vô danh (các liệt kê thêm sẽ tạo ra các mục mới). Đó là lý do tại sao tôi đã thêm bình luận đó vào 'ToList()'. –

3

Không chắc, làm thế nào bạn điền các lĩnh vực trong for, nhưng bạn có thể thử:

var lstOfSmth = Enumerable.Range(0, 100) 
          .Select(i => new { a = i, b = "lala", c = 4.5m }) 
          .ToList(); 
2

tại sao tôi nên sử dụng loại khác (tuple)

Vì chúng đã được thiết kế chính xác cho mục đích này. Nếu bạn sợ mã chi tiết, chỉ thị using cũng sẽ được giải cứu.

using myPair = Tuple<int,string>; 
using myTriple = Tuple<int,string,decimal>; 
//... 
for (int i = 0; i < 100; i++) 
{ 
    myPair pair = new myPair(1,"string"); 
    myTriple triple = new myTriple(i,"lala", 4.5); 
} 
+2

Alex - 4.5m không phải là đơn vị đo lường (không phải là mét). Nó buộc 4.5 là một số thập phân thay vì một số dấu phẩy động, đó là một thế giới của sự khác biệt về số lượng nói. – Eilon

+0

http://www.dotnetperls.com/suffix –

+0

Ôi xấu hổ tôi đã bỏ lỡ nó. Tôi sẽ sửa mọi thứ – Alex

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