2012-10-21 13 views
10

In molte lingue è possibile creare un oggetto senza creare un tipo di dati e aggiungere proprietà a tale oggetto.È possibile creare un oggetto senza una classe in C#?

Per esempio in JS o AS:

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

Oppure è possibile creare strutture in C e C++.

È possibile farlo in C#?

+0

Sì, proprio che ho dimenticato come. – quantum

+0

Perché il voto negativo? – Pier

+0

Questo non sono io. Sono senza voti per oggi. – quantum

risposta

19

Anonymous Types è quello che stai cercando. Ad esempio -

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

Sopra codice creerà una nuova object con proprietà Amount e Message.

+0

Questo approccio è migliore o peggiore del expandoobject dalle altre risposte? Perché? – Pier

+3

@Pier, questo approccio è leggermente più performante di quello dinamico poiché in realtà sta definendo un tipo in fase di compilazione. Esiste l'approccio preferito se è necessario organizzare insieme alcuni dati per l'utilizzo locale (ad esempio quando si esegue un'operazione LINQ che combina dati da più fonti). Dynamic è più flessibile (è possibile continuare ad aggiungere campi quando necessario), ma più pesante . –

+3

@Pier Sono cose completamente diverse. Le classi anonime sono determinate al momento della compilazione. Quindi non è possibile aggiungere/modificare una proprietà in fase di esecuzione. –

3

leggere su ExpandoObject

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

Console.WriteLine(myObject.myParameter); 
Problemi correlati