1. Kas ir ģenēriskais?
Ģenēriskie ir jauna sintakse, kas ieviesta C# 2.0, nevis sintakse cukurs, bet funkcijas, ko nodrošina sistēmas jauninājumi 2.0.
Programmējot programmas, mēs bieži sastopamies ar moduļiem ar ļoti līdzīgām funkcijām, bet tie apstrādā dažādus datus. Bet mums nav citas izvēles, kā rakstīt vairākas metodes atsevišķi, lai apstrādātu dažādus datu tipus. Šobrīd jautājums ir, vai ir veids, kā izmantot vienu un to pašu metodi, lai risinātu dažāda veida parametrus? Ģenērisko zāļu parādīšanās ir īpaši izstrādāta, lai atrisinātu šo problēmu.
2. Kāpēc lietot ģenēriskās zāles
Apskatīsim šādu piemēru:
Rezultātu:
No iepriekš minētajiem rezultātiem mēs varam redzēt, ka šīm trim metodēm ir vienādas funkcijas, izņemot dažādus parametrus, kurus tās iziet. Versijas 1.0 laikā nebija ģenērisko zāļu jēdziena, tāpēc ko darīt. Es uzskatu, ka daudzi cilvēki domās par vienas no trim galvenajām OOP iezīmēm mantošanu, mēs zinām, ka C# objekts ir visu veidu bāzes klase, un iepriekš minētais kods ir optimizēts šādi:
Rezultātu:
No iepriekš minētajiem rezultātiem mēs varam redzēt, ka objekta tipa izmantošana atbilst mūsu prasībām un atrisina koda atkārtotu izmantošanu. Daži cilvēki var jautāt, kāpēc ir iespējams nodot int, virkni utt., ja tas ir definēts kā objekta tips? Ir divi iemesli:
1. Objekta tips ir visu tipu vecākklase.
2. Izmantojot mantojumu, apakšklasēm ir visi vecāku klases atribūti un uzvedība, un visur, kur parādās vecāku klase, to var aizstāt ar apakšklasēm.
Bet iepriekš minētā objekta tipa metode rada vēl vienu problēmu: bokss un izpakošana var samazināt programmas veiktspēju.
Microsoft ieviesa ģenēriskos līdzekļus C# 2.0, kas var ļoti labi atrisināt iepriekš minētās problēmas.
3. Vispārīgie tipa parametri
Vispārīgā tipa vai metodes definīcijā tipa parametrs ir vietturis, ko klients norāda noteiktam tipam, kad tas instancē vispārējā tipa mainīgo. Vispārējo klasi (GenericList<T>) nevar izmantot tādu, kāda tā ir, jo tā nav patiess tips; Tas ir vairāk kā tipu projekts. Lai izmantotu GenericList<T>, klienta kodam ir jādeklarē un jāinstancē konstrukcijas tips, norādot tipa parametru leņķa iekavās. Šīs konkrētās klases tipa arguments var būt jebkurš tips, ko kompilators atpazīst. Var izveidot neierobežotu skaitu konstrukcijas tipa gadījumu, katrai no tām ir atšķirīgs tipa parametrs.
Iepriekš minētajā piemērā kodu var mainīt šādi:
Zvaniet:
Rādīt rezultātus:
|