Ohjelmointi

C # 7 perusteellisesti: paikallisten toimintojen tutkiminen

Paikallisten toimintojen tuki on erinomainen uusi ominaisuus, joka on otettu käyttöön C # 7: ssä. Huomaa, että voit määrittää paikalliset toiminnot missä tahansa menetelmässä, luokan konstruktorissa tai ominaisuuden sisällä - sekä getter että setter. Kun C #-kääntäjä on kääntänyt sen, paikallinen funktio muuttuu yksityiseksi menetelmäksi.

Kun kehität sovelluksia, sinun on ehkä luotava menetelmiä, joita ei käytetä uudelleen - tarvitset niitä vain modulaarisuuden vuoksi. Et ehkä halua, että menetelmät ovat pitkiä, sillä tällaisten menetelmien ylläpitämisestä tulisi painajainen ajan myötä. Saatat kuitenkin päätyä moniin yksityisiin menetelmiin, joita ei käytetä uudelleen, eikö? Tämä uusi ominaisuus C # 7: ssä tulee pelastamaan tällaisissa olosuhteissa - voit määrittää toiminnot, jotka ovat paikallisia toiselle laajuudelle, tai se voi olla toisen toiminnon sisällä tai jopa ominaisuuden sisällä (sekä getter että setter).

Kuvittele tilanne, jossa tarvitset auttajatoiminnon, jota kutsutaan vain kerran. Ennen kuin C # 7 oli olemassa, olisit voinut saavuttaa tämän käyttämällä Func- ja Action-tyyppejä anonyymeillä menetelmillä. Oli kuitenkin muutama haaste. He eivät tue geneerisiä aineita, parametreja sekä viite- ja ulos-parametreja.

Kun C # 7 on ympärillä, voit nyt ilmoittaa tällaiset toiminnot toisen toiminnon sisällä. Tällaisia ​​toimintoja kutsutaan paikallisiksi toiminnoiksi. Toisin sanoen paikallisten toimintojen tuki antaa sinun määrittää toiminnon toisen toiminnon piiriin.

Paikallisten toimintojen toteuttaminen C #: ssä

Kirjoitetaan koodi ja katsotaanpa paikallisten toimintojen toiminta. Harkitse seuraavaa koodinpätkää. Huomaa, että Sum-menetelmä määritetään Main-menetelmän rungossa seuraavassa koodinpätkässä.

staattinen void Main (merkkijono [] args)

        {

int summa (int x, int y)

            {

paluu x + y;

            }

Console.WriteLine (summa (10, 20));

Console.ReadKey ();

        }

Tässä esimerkissä Sum-menetelmä on paikallinen funktio - se on paikallinen Main-menetelmälle. Toisin sanoen Sum-menetelmää voidaan käyttää vain Main-menetelmän sisällä, eli menetelmän, jonka sisällä se on määritelty.

Paikallisilla toiminnoilla voi olla kaikki tavallisen menetelmän ominaisuudet paitsi että paikalliset toiminnot eivät voi olla luonteeltaan staattisia. Paikallinen toiminto voi olla jopa asynkroninen, ja sillä voi olla pääsy muuttujiin myös sulkevasta lohkosta. Liitettävän laajuuden parametreja ja paikallisia muuttujia voidaan käyttää paikallisen funktion sisällä lambda-lausekkeiden tapaan. On huomattava, että siepatut paikalliset muuttujat välitetään paikalliselle funktiolle viitteenä. Tässä on toinen esimerkki, joka havainnollistaa, kuinka paikallinen toiminto voi käyttää sen sulkutyypin muuttujia.

julkinen staattinen tyhjä näyttö (merkkijono str)

        {

int ctr = 5;

DisplayText ();

void DisplayText ()

            {

varten (int i = 0; i <ctr; i ++)

Console.WriteLine (str);

            }

        }

Katso nyt yllä annettu koodinpätkä. Näyttötapa sisältää merkkijonoparametrin ja kokonaislukumuuttujan sen sisällä. Huomaa, että näyttötavan sisällä määritetyllä paikallisella toiminnolla (nimeltään DisplayText) voi olla pääsy paikallisiin muuttujiin ja myös näyttötavan argumenttiin. Hieno ominaisuus, eikö olekin?

Yksi paikallisten toimintojen suurimmista eduista on kapselointi - paikallista toimintoa voidaan kutsua vain sen sulkutyypistä. Huomaa, että jos luokassasi on yksityinen menetelmä, kuka tahansa luokan jäsen voi käyttää yksityistä menetelmää.