Omówione zostały typy wartościowe, typ referencyjny, struktury oraz typ wyliczeniowy. Pozostał jeszcze typ anonimowy, będący grupą wartości zapisaną w właściwościach. Instancję typu anonimowego tworzymy, korzystając ze słowa kluczowego new
, ale zamiast podawać nazwę typu, wewnątrz nawiasów klamrowych podajemy kolekcję par nazwa-wartość. Poniżej znajduje się przykład.
var x0 = new { Name = "R2-D2", Origin = "Naboo" };
W przypadku typu anonimowego to kompilator generuje klasę, udostępniając właściwości, które są tylko do odczytu. W naszym przykładzie wygenerowana została klasa o nazwie <>f__AnonymousType0`2, zawierająca właściwości: Name oraz Origin typu string
. Sama nazwa klasy nie jest prawidłowym identyfikatorem, gdyż rozpoczyna się znakami <>. Kompilator tworzy ją w ten sposób, aby mieć pewność, że nie będzie ona kolidować z innym identyfikatorem. Takie identyfikatory określane są mianem nazw niewyobrażalnych. Typ właściwości określony jest automatycznie na podstawie wyrażenia inicjalizatora, identycznie jak podczas użycia słowa kluczowego var
. Kompilator oprócz właściwości generuje również metodę Equals, w taki sposób, aby możliwe było porównywanie instancji na podstawie ich wartości.
Typy anonimowe zostały dodane do języka na potrzeby technologii LINQ, a ich zastosowanie ogranicza się głównie do definiowania niestandardowych kryteriów wyszukiwania czy grupowania.
Troska Robert