Ohjelmointi

Kuinka työskennellä geneeristen lääkkeiden kanssa C #: ssä

C # on voimakkaasti kirjoitettu kieli. Tämä tarkoittaa, että kun käytät C #: ää, sinun on ilmoitettava tyyppi ennen tietojen tallentamista siihen. Vaikka tämäntyyppinen turvallisuus auttaa valvomaan hallittuun ympäristöön kohdistuvien kielten turvallisuutta ja yhteentoimivuutta, kehittäjänä sinun on määriteltävä minkä tahansa objektin tyyppi, jota tarvitset työskennellä.

OK, mutta entä jos haluat tallentaa tietoja tyyppikassakokoelmaan, ei ole mitään nyrkkeilyä ja pakkauksen purkamista? Tässä geneeriset lääkkeet tulevat auttamaan.

Yleisten tietojen avulla voit työskennellä tietoturvatietojen kanssa ilman nyrkkeilyä ja pakkauksen purkamista. Voit hyödyntää geneerisiä aineita luodaksesi tyyppikokoelmakokoelmia sekä luokkia ja menetelmiä, jotka voivat hyväksyä tyypin parametrina. Tällaiset ilmoitetut luokat voivat toimia minkä tahansa tyyppisillä. Tämä auttaa koodiasi olemaan paljon hallittavampi, laajennettavissa, ylläpidettävissä ja tehokkaampi. Tässä artikkelissa tutkimme geneerisiä lääkkeitä ja miten ne voidaan toteuttaa C # -ohjelmointikielellä.

Yleisohjeet auttavat sinua toteuttamaan algoritmeja, jotka voivat toimia monenlaisissa tyypeissä. Voit esimerkiksi kirjoittaa algoritmin lajittelemaan kokonaisluku-, kaksinkertainen tai jopa merkkijonojärjestelmä. Tällaisten lajittelualgoritmien toteuttamiseksi ilman geneerisiä aineita tarvitset yleensä useita lajittelumenetelmiä - yhden kutakin tyyppiä kohden.

Kun olet ilmoittanut luokan tai menetelmän käyttämällä tyypin parametreja, voit lykätä määrittelemällä tyypin, jolla luokat tai menetelmät toimisivat, siihen asti, kunnes näitä luokkia ja menetelmiä käytetään asiakaskoodista. Generics edistää tyyppiturvallisuutta, koodin ylläpitoa, koodin tehokkuutta ja suorituskyvyn parantamista. Huomaa, että voit hyödyntää geneerisiä aineita omien yleisten luokkien, rajapintojen, menetelmien, tapahtumien ja edustajien toteuttamiseksi.

Kun käytät yleisiä lääkkeitä, sinun ei enää tarvitse kirjoittaa valettuja objekteja vastaaviin tyyppeihin - tyyppitiedot on dokumentoitu hyvin koodissasi. Kun käytät geneerisiä aineita, kääntäjä tarkistaa koodisi kääntöajan tarkistuksen tyypin turvallisuuden noudattamiseksi. Koodi, joka käyttää geneerisiä aineita, johtuu aina nyrkkeilyn ja nyrkkeilyn yleiskustannusten välttämisestä.

Seuraava koodiluettelo näyttää kolme tapaa, joilla lajitellaan syötetiedot - tarvitset yhden lajittelutavan kullekin tyypille.

public static int [] Lajittelu (int [] integerArray)

  {

// Koodi lajitella kokonaislukujoukko

return kokonaislukuArray;

  }

julkinen staattinen merkkijono [] Lajittelu (merkkijono [] stringArray)

  {

// Koodi lajittelemaan jonot

return stringArray;

  }

public double [] Lajittelu (double [] doubleArray)

  {

// Koodi lajitella kaksinkertainen taulukko

paluu doubleArray;

  }

Jos käytät Generics-ohjelmaa, sinulla voi olla vain yksi menetelmä, joka voi hyväksyä tyypin parametrin ja lajitella syötetyt tiedot pyydettäessä.

julkisen luokan algoritmi

    {

julkinen staattinen T [] Lajittelu (T [] inputArray)

        {

// Koodi lajittelemaan yleinen taulukko

return inputArray;

        }

    }

Kirjoita parametrirajoitukset

Kun työskentelet geneeristen lääkkeiden kanssa, sinun tulee olla tietoinen yleisistä rajoituksista, jotka sisältävät: johdannaisrajoitukset ja oletusrakentajarajoitukset. Johtamisrajoituksia käytetään määrittämään rajapinta tai luokka, jota käytettäisiin määritettäessä johdannainen yleistyypille.

Tässä on esimerkki, joka kuvaa, miten käyttöliittymä ILogger on käytetty tyypin parametrin T rajoittamiseen (määritettäessä parametria DBLogger luokka) olevan tyypin ILogger käyttöliittymä.

julkinen käyttöliittymä ILogger

    {

// Joitakin koodeja

    }

julkisen luokan DBLogger missä T: ILogger

    {

// Joitakin koodeja

    }

Yleiset tyyppiparametrit voivat olla joko arvo- tai viitetyyppejä. Voit esimerkiksi määrittää luokan, joka sisältää yleisen tyypin parametrin, millä tahansa seuraavista tavoista.

public class FileLogger missä T: luokka

    {

// Joitakin koodeja

    }

julkisen luokan BaseLogger missä T: int

    {

// Joitakin koodeja

    }

Konstruktorin rajoitusta käytetään oletusrakentajan pakottamiseen yleisen tyypin parametrille. Tässä on esimerkki tämän käsitteen havainnollistamiseksi.

luokka DBLogger missä T: new () // Geneerisen tyypin parametrilla T on oltava oletusrakentaja

{

// Joitakin koodeja

}

Voit myös käyttää yleisiä tyypin parametreja työskennellessäsi perinnön kanssa. Tässä on esimerkki siitä, miten voit saavuttaa tämän. Huomaa, että seuraavassa esimerkissä olevan yleisen tyypin parametrilla tulisi olla oletusrakentaja.

julkisen luokan BaseLogger

    {

// Joitakin koodeja

    }

public class FileLogger: BaseLogger missä T: uusi ()

    {

// Joitakin koodeja

    }

Seuraava koodiluettelo näyttää, kuinka yleisiä menetelmiä voidaan toteuttaa.

julkisen luokan BaseLogger

    {

public void Alusta (T t)

        {

// Koodi alustaa logger

        }

    }

Katso yllä annettu koodinpätkä. Huomaa, kuinka yleistä tyyppiä koskevaa parametria on käytetty parametrina Alustaa() menetelmä. Haluaisin keskustella lisää geneerisistä aineista tulevissa viesteissäni täällä. Voit oppia lisää geneerisistä lääkkeistä täältä: //msdn.microsoft.com/en-us/library/512aeb7t.aspx

$config[zx-auto] not found$config[zx-overlay] not found