2012-10-21 27 views
10

Birçok dilde, veri türü oluşturmadan bir nesne oluşturabilir ve bu nesneye özellik ekleyebilirsiniz. C# sınıfında bir nesne olmayan bir nesne oluşturmak mümkün mü?

örneğin JS veya AS için:

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

Yoksa C++ ve C yapıları oluşturabilir.

Bunu C# içinde yapmak mümkün mü?

+0

orada Oku senin gibi namespace.You diğer dinamik dillerde anında özelliklerini ekleyebilirsiniz ExpandoObjectSystem.Dynamic altında olduğu, sadece nasıl olduğunu unuttum. – quantum

+0

Niçin olumsuz oy? – Pier

+0

Bu ben değilim. Bugün için oy vermiyorum. – quantum

cevap

19

Anonymous Types ne arıyorsanız. Örneğin - özelliklerinde Amount ve Message ile yeni object yaratacak kod Üstü

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

.

+0

Bu yaklaşım, diğer cevaplardan çıkan genişlemeden daha mı kötü? Niye ya? – Pier

+3

@Pier, bu yaklaşım, aslında derleme zamanında bir tür tanımladığından dinamikten biraz daha performanslıdır. Yerel kullanım için bazı verileri birlikte organize etmeniz gerekiyorsa tercih edilen bir yaklaşım vardır (örneğin, birden çok kaynaktan veriyi birleştiren bir LINQ işlemi gerçekleştirirken olduğu gibi). Dinamik daha esnek (ihtiyaç duyduğunuz gibi alan eklemeye devam edebilirsiniz), ancak daha ağır . –

+3

@Pier Bunlar tamamen farklı şeyler. Anonim sınıflar derleme zamanında belirlenir. Bu nedenle, çalışma zamanında bir özellik ekleyemez/değiştiremezsiniz. –

3

Evet yaklaşık ExpandoObject

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

Console.WriteLine(myObject.myParameter); 
İlgili konular