2012-10-21 9 views
10

W wielu językach można utworzyć obiekt bez tworzenia typu danych i dodać właściwości do tego obiektu.Czy można utworzyć obiekt bez klasy w języku C#?

Na przykład w JS lub AS:

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

Albo można tworzyć struktury w C i C++.

Czy można to zrobić w języku C#?

+0

Tak, właśnie że zapomniałem jak. – quantum

+0

Dlaczego głosowanie negatywne? – Pier

+0

To nie ja. Brakuje mi dzisiaj głosów. – quantum

Odpowiedz

19

Anonymous Types jest tym, czego szukasz. Eg -

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

Powyższy kod stworzy nowy object o właściwościach Amount i Message.

+0

Czy to podejście jest o wiele gorsze niż rozszerzenie z innych odpowiedzi? Czemu? – Pier

+3

@Pier, to podejście jest nieco bardziej wydajne niż dynamiczne, ponieważ faktycznie definiuje typ w czasie kompilacji. Preferowane jest podejście, jeśli trzeba zorganizować pewne dane razem do użytku lokalnego (na przykład podczas wykonywania operacji LINQ, która łączy dane z wielu źródeł). Dynamiczny jest bardziej elastyczny (można dodawać pola w miarę potrzeb), ale cięższy . –

+3

@Pier Są to zupełnie różne rzeczy. Anonimowe klasy są określane w czasie kompilacji. Nie można więc dodawać/zmieniać właściwości w środowisku wykonawczym. –

3

Przeczytaj o ExpandoObject

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

Console.WriteLine(myObject.myParameter); 
Powiązane problemy