2012-10-21 37 views
10

Trong nhiều ngôn ngữ, bạn có thể tạo một đối tượng mà không cần tạo kiểu dữ liệu và thêm thuộc tính cho đối tượng đó.Có thể tạo một đối tượng không có lớp trong C# không?

Ví dụ trong JS hoặc AS:

var myObject = {}; 
myObject.myParameter = "hello world"; 

Hoặc bạn có thể tạo cấu trúc trong C và C++.

Có thể thực hiện điều đó trong C# không?

+0

Vâng, chỉ mà tôi quên mất. – quantum

+0

Tại sao bỏ phiếu phủ định? – Pier

+0

Đó không phải là tôi. Tôi ra khỏi phiếu bầu cho ngày hôm nay. – quantum

Trả lời

19

Anonymous Types là những gì bạn đang tìm kiếm. Ví dụ: -

var v = new { Amount = 108, Message = "Hello" }; 

Trên mã sẽ tạo ra một mới object với tính AmountMessage.

+0

Cách tiếp cận này có tốt hơn o so với expandoobject từ các câu trả lời khác không? Tại sao? – Pier

+3

@Pier, phương pháp này có hiệu suất cao hơn năng động vì nó thực sự xác định một loại tại thời gian biên dịch. Có cách tiếp cận ưa thích nếu bạn cần tổ chức một số dữ liệu với nhau để sử dụng cục bộ (như khi thực hiện một thao tác LINQ kết hợp dữ liệu từ nhiều nguồn.) Động là linh hoạt hơn (bạn có thể tiếp tục thêm các trường khi cần), nhưng nặng hơn . –

+3

@Pier Chúng hoàn toàn khác nhau. Các lớp ẩn danh được xác định tại thời gian biên dịch. Vì vậy, bạn không thể thêm/thay đổi thuộc tính khi chạy. –

3

Đọc về ExpandoObject

dynamic myObject = new ExpandoObject(); 
myObject.myParameter = "hello world"; 

Console.WriteLine(myObject.myParameter); 
Các vấn đề liên quan