Ohjelmointi

C # 6: n uudet ominaisuudet

C # 6 toimitetaan Visual Studio 2015: n mukana ja tarjoaa uusia mielenkiintoisia ominaisuuksia. On paljon ominaisuuksia, jotka edistävät vähemmän koodisotkua ja kirjoituspuhtaampaa, ylläpidettävää koodia. Tässä viestissä haluaisin käydä läpi joitain uusia ominaisuuksia C # -kielellä.

Poikkeussuodattimet

Poikkeussuodattimet eivät ole uusia VB: ssä - nyt sinulla on tämä ominaisuus myös C #: ssä. Niiden avulla voit suodattaa poikkeuksia koodissasi vakavuuden perusteella. Tässä on esimerkki.

yrittää

{

// jokin koodi, joka saattaa aiheuttaa poikkeuksen

}

catch (Poikkeuspoikkeus) if (poikkeus.GetType ()! = typeof (SqlException))

{

ExceptionManager.HandleException (poikkeus);

}

Yllä oleva koodi tarkistaa, onko heitetty poikkeus tyyppiä SqlException. Jos ei, poikkeusta käsitellään. Tässä on toinen esimerkki, joka osoittaa, kuinka voit tarkistaa poikkeusobjektin Message-ominaisuuden ja määrittää ehdon vastaavasti.

yrittää

{

heittää uusi CustomException ("");

}

catch (CustomException ex) if (esim.Message == "")

{

// ohjaus tulee tähän saalislohkoon

}

catch (CustomException ex) if (esim.Message == "")

{

// ohjaus ei tule tähän saalislohkoon

}

Tuki asynkronialle saaliissa ja lopulta estää

Tämä on todellakin hieno ominaisuus. Kirjaamme usein poikkeukset tiedostoon tai tietokantaan. Tällaiset toiminnot ovat resursseja kuluttavia ja aikaa vieviä, koska I / O-toiminnon suorittamiseksi joudut käyttämään levyä. Tällaisissa tilanteissa olisi hienoa, jos voit soittaa asynkronisia puheluja poikkeuslohkojesi sisällä. Saatat myös joutua suorittamaan joitain puhdistusoperaatioita viimeisessä lohkossa, mikä voi olla resursseja kuluttava ja / tai aikaa vievä.

C # 6: n kanssa sinun ei enää tarvitse estää nykyistä ketjua suorittaessasi tällaisia ​​resursseja kuluttavia tai aikaa vieviä toimintoja. Seuraavaksi annettu koodinpätkä kuvaa, kuinka voit käyttää await-avainsanaa kiinni ja lopulta estää.

julkinen asynkronointityöprosessi Async ()

{

yrittää

{

// jokin koodi, joka saattaa aiheuttaa poikkeuksen

}

saada kiinni

{

odota Tehtävä Viive (5000);

}

lopulta

{

odota Tehtävä Viive (1000);

}

}

Seuraava koodinpätkä osoittaa, että voit odottaa puhelua mukautetulle LogExceptionAsync () -menetelmälle poikkeuksen kirjaamiseksi.

yrittää

{

// koodi, joka saattaa aiheuttaa poikkeuksen

}

saalis (poikkeus poikkeus)

{

odota LogExceptionAsync (poikkeus);

}

Tuki staattisille "käyttäville" lauseille

Tämä on toinen hieno uusi ominaisuus C # 6: ssa, jonka avulla voit käyttää staattista menetelmää, joka ei sisällä nimenomaisten viitteiden tarvetta. Tässä on esimerkki.

käyttämällä järjestelmää;

käyttämällä System.Console;

julkisen luokan ohjelma

{

yksityinen staattinen void Main ()

{

WriteLine ("C # 6: n uudet ominaisuudet");

}

}

Kuten yllä olevasta koodinpätkästä näet, sinun ei enää tarvitse erikseen määrittää tyyppiä, kun soitat System.Console-luokkaan kuuluvaa staattista WriteLine () -menetelmää. Pohjimmiltaan tämä ominaisuus edistää puhtaampaa koodia - koodia, jota on helpompi lukea, kirjoittaa ja ylläpitää.

Automaattiset kiinteistöjen alustajat

Tämän ominaisuuden avulla voit asettaa ominaisuuksien arvot suoraan ilmoitettavaan paikkaan.

luokan asiakas

{

julkinen merkkijono Etunimi {get; aseta; } = "Joydip";

julkinen merkkijono Sukunimi {get; aseta; } = "Kanjilal";

julkinen int Ikä {get; aseta; } = 44;

}

C #: n aiemmissa versioissa joudut käyttämään usein oletusrakentajia asettamaan oletusarvot luokan ominaisuuksille.

Tässä on toinen esimerkki, joka havainnollistaa pikakuvakkeen syntaksia ominaisuuden alustamiseksi ilmoituspisteessä, jolle asetinta ei ole määritelty.

luokan LogManager

{

julkinen staattinen LogManager-esiintymä {get; } =

uusi LogManager ();

}

Sanakirjan alustus

Tämän ominaisuuden avulla voit alustaa oletusarvot sanastossa, jossa on paljon vähemmän koodia. Tässä on esimerkki, joka kuvaa tätä.

luokan ohjelma

{

staattinen void Main (merkkijono [] args)

{

Sanakirja dict = uusi sanakirja ()

{

["USA"] = "Washington DC",

["Englanti"] = "Lontoo",

["India"] = "New Delhi"

};

}

}

Kuten yllä olevasta koodinpätkästä näet, sanakirja on alustettu oletusarvoilla siinä kohdassa, jossa se on ilmoitettu. Paljon mukavampi lähestymistapa verrattuna C # -kielen aikaisempiin versioihin, eikö olekin?

Ensisijainen rakentaja

Tämä on jälleen erinomainen uusi ominaisuus - se eliminoi vaivan, joka liittyy koodin kirjoittamiseen luokan tietojäsenten alustamiseksi konstruktorimenetelmän parametreista. Toisin sanoen tämä ominaisuus tarjoaa syntaktisen pikakuvakkeen luokan konstruktorin määritelmälle.

Tässä on esimerkki, joka havainnollistaa primäärirakentajien käyttöä.

luokan työntekijä (merkkijono etunimi, merkkijononimi, merkkijonon osoite)

{

julkinen merkkijono Etunimi {get; aseta; } = etunimi;

julkinen merkkijono Sukunimi {get; aseta; } = sukunimi;

julkinen merkkijono Osoite {get; aseta; } = osoite;

}

Tästä MSDN-artikkelista saat lisätietoja C # 6: n uusista ominaisuuksista ja parannuksista.