2011-08-23 18 views
15

Cách gọn gàng nhất/ngắn nhất tôi có thể viết bộ khởi tạo bộ sưu tập nội tuyến là gì?Trình khởi tạo bộ sưu tập nội tuyến ngắn nhất? C#

Tôi không quan tâm đến tên tham chiếu, chỉ mục là tốt và mục chỉ cần được sử dụng trong phạm vi của phương pháp.

Tôi nghĩ rằng một bộ sưu tập kiểu ẩn danh sẽ phức tạp hơn bởi vì tôi sẽ phải tiếp tục viết tên khóa mỗi lần.

Tôi hiện đang có

var foo = new Tuple<int, string, bool>[] 
{ 
    new Tuple<int, string, bool>(1, "x", true), 
    new Tuple<int, string, bool>(2, "y", false) 
}; 

Im hy vọng C# 4.0 sẽ có một cái gì đó ive bỏ qua.

+1

bạn muốn ngắn nhất hoặc gọn gàng nhất? – Jodrell

+0

Nếu nó được sử dụng nhiều, bạn có thể viết lớp của riêng bạn có phương thức 'Add (int, string, bool)' và sau đó sử dụng bộ khởi tạo bộ sưu tập, như 'var foo = new MyCollection {{1," x ", true}, {2, "y", false}}; ' – nawfal

Trả lời

17

Ngắn nhất bạn c một get là sử dụng Tuple.Create thay vì new Tuple:

var foo = new [] { Tuple.Create(1, "x", true), Tuple.Create(2, "y", false) }; 
5

một chút ít không gian trong đó nếu bạn sử dụng Tuple.Create(1,"x",true) thay vì điều mới - và bạn có thể dải những thứ new Tuple<tint, string, bool> trước mảng quá:

var foo = new [] { Tuple.Create(1, "x", true), Tuple.Create(2, "y", false) }; 

hoặc thực hiện việc này một:

Func<int, string, bool, Tuple<int, string, bool>> T = (i, s, b) => Tuple.Create(i,s,b); 
var foo = new [] { T(1, "x", true), T(2, "y", false) }; 

hoặc thậm chí

Func<int, string, Tuple<int, string, bool>> T = (i, s) => Tuple.Create(i,s,true); 
Func<int, string, Tuple<int, string, bool>> F = (i, s) => Tuple.Create(i,s,false); 
var foo = new [] { T(1, "x"), F(2, "y") }; 
+1

btw markdown cung cấp một cách dễ dàng hơn để định dạng mã * khối * so với những gì bạn đang làm - chỉ cần thụt lề mỗi (không thoát) dòng bốn không gian! ví dụ: xem chỉnh sửa của tôi – AakashM

+0

oh - cảm ơn bạn - đã thử nút "" nhưng điều này sẽ dừng lại trên mỗi dòng trống .... Tôi đoán điều này có thể giúp tôi nhanh hơn trong tương lai;) – Carsten

+1

@CKoenig: Chọn tất cả mã bạn muốn định dạng và sau đó nhấn nút. Những công việc này. –

0

Bạn cũng có thể thêm một

using MyTuple= System.Tuple<int, string, bool>; 

vào cuối using tờ khai của bạn và sau đó sử dụng MyTuple thay vì phiên bản dài hơn.

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