See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 17614|Vastuse: 1

[Kommunikatsioon] C# üldised näited on üksikasjalikult selgitatud

[Kopeeri link]
Postitatud 28.01.2019 16:03:40 | | | |
1. Mis on üldine?

Generikad on uued süntaksid, mis tutvustati C# 2.0-s, mitte süntaksi sugar, vaid funktsioonid, mida pakuvad raamistiku uuendused 2.0-s.

Kui me programmeerime programme, kohtame sageli mooduleid, millel on väga sarnased funktsioonid, kuid need töötlevad erinevaid andmeid. Kuid meil pole muud valikut kui kirjutada mitu meetodit eraldi, et hallata erinevaid andmetüüpe. Praegu on küsimus, kas on võimalik kasutada sama meetodit erinevate parameetrite puhul? Generikumide tekkimine on spetsiaalselt loodud selle probleemi lahendamiseks.

2. Miks kasutada geneerikuid

Vaatame järgmist näidet:
Tulemus:

Ülaltoodud tulemustest näeme, et neil kolmel meetodil on samad funktsioonid, välja arvatud erinevad parameetrid, mida nad läbivad. Versiooni 1.0 ajal polnud generikute mõistet, nii et mida teha. Usun, et paljud inimesed mõtlevad ühe OOP kolmest peamisest omadusest pärimisele, me teame, et C#-s on objekt kõigi tüüpide baasklass ja ülaltoodud kood on optimeeritud järgmiselt:
Tulemus:

Ülaltoodud tulemustest näeme, et objektitüübi kasutamine vastab meie nõuetele ja lahendab koodi korduvkasutuse. Mõned inimesed võivad küsida, miks on võimalik sisestada int, string jne, kui see on määratletud objektitüübina? Põhjuseid on kaks:

1. Objektitüüp on kõigi tüüpide vanemklass.

2. Pärilikkuse kaudu on alamklassidel kõik vanemklassi atribuudid ja käitumised ning kus iganes vanemklass esineb, saab selle asendada alamklassidega.

Kuid ülaltoodud objektitüübi meetod toob kaasa veel ühe probleemi: pakkimine ja lahtipakkimine võivad programmi jõudlust vähendada.

Microsoft tutvustas C# 2.0 versioonis generikume, mis suudab ülaltoodud probleemid väga hästi lahendada.

3. Üldised tüübiparameetrid

Üldises tüübis või meetodi definitsioonis on tüübiparameeter kliendi poolt määratud kohatäitja, kui ta instantsiseerib selle tüübi muutuja. Üldist klassi (GenericList<T>) ei saa kasutada sellisena, kuna see ei ole tõeline tüüp; See on pigem tüüpide plaan. GenericListi kasutamiseks <T>peab kliendikood deklareerima ja instantsima konstruktsioonitüübi, määrates tüübiparameetri nurksulgudes. Selle konkreetse klassi tüübiargument võib olla ükskõik milline tüüp, mida kompilaator tunneb. Saad luua suvalise arvu konstruktsioonitüübi instantse, igaühel erinev tüübiparameeter.

Ülaltoodud näite koodi saab muuta järgmiselt:
Helista:
Näita tulemusi:






Eelmine:.NET Core failipakkujad
Järgmine:MySQL andmebaasi nimi, tabeli nimi ja välja nime päring
Postitatud 29.01.2019 04:08:13 |
Väga hea, põhjalik ja põhilisi asju tuleks rohkem üle vaadata
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com