C# ja anonüümsed tüübid
08.12.2007 | Gunnar
Olles ennast kenasti võtmesõna var lainele seadnud, uurin ühte C# 3.0 uuendust, millel nimeks anonüümsed tüübid (anonymous types). Jälle üks asjadest, kus mängu tuleb vana hea võtmesõna var.
Alustuseks oletame, et meil on kood, kus tahame kasutada mingi kindla ülesehitusega objekte. Neid on vaja ainult ühes kohas ning eraldi klassi nende jaoks me pigem looma ei tahaks hakata.
Dünaamiliste andmetüüpidega keeltes (näiteks JavaScript ja PHP), pole see mingi mure. Võimegi defineerida objekti ning lisada sellele külge need paar atribuuti, mis meil vaja on. C# pakub välja lähedase funktsionaalsuse, milleks ongi anonüümsed tüübid.
Oletame, et meil on vaja teha mõned arvutused, kus kasutame mingi reaalelulise objekti mõõtmeid - laiust ja kõrgust. Lõik koodist on midagi sellist.
Ja IntelliSense-i tugi on ka meil kenasti olemas, nagu näeme allolevalt pildilt.
See asi sarnaneb peale vaadates veel rohkem PHP-le kui eelmises var teemalises kandes C# ja võtmesõna var toodud kood, kus ma püüdsin ravida nooremate mängumeeste asjatuid foobiaid.
Siingi toodu korral pole vaja tunda hirmu, et kõik muutuks ülimalt dünaamiliseks. Kui heidame pilgu kompileeritud koodile ja vaatame, milline näeb see välja Intermediate Language-is, siis vaatab meile vastu järgmine pilt.
Näeme, et kompilaator on loonud meile uue klassi, millel nimeks < >f_AnonymousTye0`2. Teised klassid meie uuest klassist pärida ei saa, samuti ei saa me seda klassi koodis uuesti luua, sest me ei saa defineerida tüüpe, mille nimes on nurksulud. Ja loomulikult tekib see tüüp alles peale kompileerimist, seega enne meil teda olemas ei ole.
Anonüümsed tüübid võivad olla meile igati abiks, kui soovime muuta koodi mõnes kohas paremini loetavaks. Samas võivad anonüümsed tüübid tekitada ka paraja segaduse, eriti siis, kui nende otstarve pole koodis üheselt mõistetav. Seega, kasutage anonüümeid tüüpe mõistlikult ja vastutustundlikult.
