Kas čia? Šio puslapio pagalba gali išsaugoti įrašą tolimesniam naudojimui, arba parodyti savo draugams per socialinius tinklus. Pranešimą apie įrašą galima nusiųsti ir el. paštu.

Kur norite publikuoti?

Nusiųsk draugui el. paštu

E-mail It
2008-11-20

Naujos C# 4.0 galimybės - 2 dalis

Publikuota: C Sharp

Pirmoje dalyje aš trumpai aprašiau C# 4.0 dinamines savybes ir naują raktažodį dynamic. Pirmą kartą pamačius šią galimybę, man, kaip ir daugeliui skaitytojų, kilo klausimas:  dinaminės kalbos nepalaiko IntelliSense, klaidas galime aptikti tik vykdymo metu ir turi nemažai kitų “neigiamų” savybių – kam viso šito reikia C#?


Trumpai pagalvojus pasirodo, kad kartais mes nors ir rašome statinį kodą, bet jis pagal prigimtį yra dinaminis: mes sužinome apie klaidas, objekto tipą ir jo meta informaciją tik vykdymo metu. Tai visada jautiesi programuojant COM objektus (geriausias pavyzdys Office InterOp), iš dalies XML. Paskutiniu metu paplitus Silverlight, vis daugiau žmonių kviečia JavaScript iš Silveright. Nu ir kaip minėjau, jau kurį laiką egzistuoja tokios dinaminės .NET kalbos kaip IronRuby ir IronPython.




Aš ilgai galvojau kokį pavyzdį pateikti ir apsistojau ties IronPython metodo kvietimo iš C#. Tarkime mes turime IronPython metodą Testing, kuris priima kaip argumentą kalbos pavadinimą ir grąžina pranešimą „Testuojame {kalbos pavadinimas} !“. Šį metodą mes aprašome faile IPyClass.py, o jo kodas atrodo taip:



Tam tikras suderinamumo lygis tarp IronPython ir C# egzistuoja jau dabar, todėl mes galime iškviesti metodą Testing ir gauti grąžinamą tekstą taip:



Pirmosios dvi eilutės yra standartinis DLR kodas – sukuriama vykdymo aplinka ir pakraunami išeities tekstai. Toliau mes aprašome delegatą, kuris ir bus atsakingas už metodo Testing iškvietimą bei rezultato apdorojimą. Kaip matyti, nors mes ir naudojame statinį C#, bet jeigu metodas Testing neegzistuoja arba jo signatūra yra ne tokia kaip nurodyta – klaidą gausime tik programos vykdymo metu. Su C# 4.0 tą patį kodą galima perrašyti taip:



Vietoje to, kad bandyti pritaikyti dinaminį metodą statinei kalbai, mes tiesiog kviečiame šį metodą.



Ką aš labiausiai noriu pabrėžti, C# 4.0 dinaminės galimybės turi būti naudojamos TIK ten, kur vyksta dinaminis darbas su objektais ar resursais. Visais kitais atvejais BŪTINAI naudokite tradicinį statinį C#!



Kitoje dalyje aš užbaigsiu šnekėti apie dinamines C# 4.0 savybes parodant, kaip pačiame C# galima aprašyti dinaminę klasę.


Atgal į: Naujos C# 4.0 galimybės - 2 dalis