Programmēšana

Kā strādāt ar vispārīgiem medikamentiem C #

C # ir stingri rakstīta valoda. Tas nozīmē, ka, lietojot C #, pirms datu glabāšanas tajā jādeklarē tips. Lai gan šāda veida drošība palīdz nodrošināt drošību un savietojamību starp valodām, kuru mērķauditorija ir pārvaldītā vide, jums kā izstrādātājam ir jānosaka jebkura veida objekts, ar kuru jums jāstrādā.

Labi, bet ko darīt, ja vēlaties uzglabāt datus drukas kolekcijā, kas neietver nekādus boksa un izsaiņošanas izdevumus? Lūk, kur ģenēriskie līdzekļi nāk talkā.

Vispārīgie dati ļauj jums strādāt ar drošiem datiem bez boksa un kastes noņemšanas. Varat izmantot vispārīgos, lai izveidotu drukas kolekcijas, kā arī klases un metodes, kas tipu var pieņemt kā parametru. Šādas klases, kuras ir deklarētas, var strādāt ar jebkuru tipu. Tas palīdz kodam būt daudz vieglāk pārvaldāmam, paplašināmam, uzturējamam un efektīvam. Šajā rakstā mēs izpētīsim vispārīgos un to, kā tos var ieviest, izmantojot C # programmēšanas valodu.

Generics palīdz jums ieviest algoritmus, kas var darboties ļoti dažādos veidos. Piemēram, ieteicams uzrakstīt algoritmu, lai kārtotu veselu skaitļu vai divkāršo masīvu vai pat virkņu masīvu. Lai ieviestu šādus šķirošanas algoritmus bez vispārīgiem, jums parasti ir nepieciešamas vairākas šķirošanas metodes - pa vienam katram tipam.

Kad esat deklarējis klasi vai metodi, izmantojot tipa parametrus, varat atlikt, norādot veidu, ar kuru klases vai metodes darbosies, līdz brīdim, kad šīm klasēm un metodēm piekļūst no klienta koda. Generics veicina tipa drošību, koda uzturēšanu, koda efektivitāti un uzlabotu veiktspēju. Ņemiet vērā, ka varat izmantot vispārīgos līdzekļus, lai ieviestu savas vispārīgās klases, saskarnes, metodes, notikumus un delegātus.

Lietojot vispārīgas zāles, jums vairs nav nepieciešams rakstīt objektus uz attiecīgajiem tipiem - informācija par tipu ir labi dokumentēta jūsu kodā. Kad izmantojat vispārīgus, kompilators veic koda sastādīšanas laika pārbaudes, lai pārbaudītu koda atbilstību tipa drošībai. Kods, kurā tiek izmantoti vispārīgie medikamenti, vienmēr ir saistīts ar izvairīšanos no boksa un izsaiņošanas pieskaitāmajām izmaksām.

Šajā kodu sarakstā tiek parādītas trīs metodes, kā kārtot ievades datus - katram veidam ir nepieciešama viena kārtošanas metode.

public static int [] Kārtot (int [] integerArray)

  {

// Kods, lai kārtotu veselu skaitļu masīvu

atgriezt integerArray;

  }

publiskā statiskā virkne [] Kārtot (virkne [] stringArray)

  {

// Kods, lai kārtotu virkņu masīvu

atgriezties stringArray;

  }

public double [] Kārtot (double [] doubleArray)

  {

// Kods, lai kārtotu dubultnieku masīvu

atgriezties doubleArray;

  }

Ja izmantojat Generics, jums var būt tikai viena metode, kas var pieņemt tipa parametru un pēc pieprasījuma kārtot ievades datus.

sabiedrības klases algoritms

    {

publiskais statiskais T [] Kārtot (T [] inputArray)

        {

// Kods, lai kārtotu vispārīgu masīvu

atgriezties inputArray;

        }

    }

Ierakstiet parametru ierobežojumus

Strādājot ar vispārīgajiem, jums jāzina vispārīgie ierobežojumi, kas ietver: atvasināšanas ierobežojumus un noklusējuma konstruktora ierobežojumus. Atvasināšanas ierobežojumus izmanto, lai norādītu saskarni vai klasi, kas tiktu izmantota, lai definētu atvasinājumu vispārējam tipam.

Šeit ir piemērs, kas ilustrē, kā saskarne ILogger ir izmantots, lai ierobežotu tipa parametru T (definējot DBLogger klasei) ILogger interfeiss.

publiskā saskarne ILogger

    {

// Daži kodi

    }

publiskā klase DBLogger, kur T: ILogger

    {

// Daži kodi

    }

Jūsu vispārējā tipa parametriem var būt vērtības vai atsauces tips. Piemēram, jūs varat definēt savu klasi, kurā ir vispārēja tipa parametrs, jebkurā no šiem veidiem.

public class FileLogger kur T: klase

    {

// Daži kodi

    }

publiskā klase BaseLogger kur T: int

    {

// Daži kodi

    }

Konstruktora ierobežojums tiek izmantots, lai izpildītu noklusējuma konstruktoru vispārējā tipa parametram. Šeit ir piemērs, kas ilustrē šo koncepciju.

klase DBLogger kur T: new () // Vispārējā tipa parametram T jābūt noklusējuma konstruktoram

{

// Daži kodi

}

Strādājot ar mantojumu, varat izmantot arī vispārēja tipa parametrus. Šeit ir piemērs, kas parāda, kā jūs to varat sasniegt. Ņemiet vērā, ka vispārīgajam tipa parametram nākamajā piemērā jābūt noklusējuma konstruktoram.

sabiedrības klase BaseLogger

    {

// Daži kodi

    }

publiskā klase FileLogger: BaseLogger kur T: jauns ()

    {

// Daži kodi

    }

Šis kodu saraksts parāda, kā vispārējās metodes var ieviest.

sabiedrības klase BaseLogger

    {

public void Inicializēt (T t)

        {

// Kods, lai inicializētu reģistrētāju

        }

    }

Skatiet iepriekš sniegto koda fragmentu. Ņemiet vērā, kā vispārīgā tipa parametrs ir izmantots kā parametrs Palaist() metodi. Es apspriestu vairāk par vispārējiem medikamentiem savos turpmākajos ierakstos šeit. Vairāk par vispārīgām zālēm varat uzzināt šeit: //msdn.microsoft.com/en-us/library/512aeb7t.aspx

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