Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 24117|Atbildi: 1

[Avots] Detalizēts skaidrojums par C# Tuple VS ValueTuple

[Kopēt saiti]
Publicēts 14.05.2018 16:37:48 | | | |
C# 7.0 jau kādu laiku ir izlaists, un visi zina, ka jaunajā funkcijā: ValueTuple ir optimizācija tupeliem. Šeit ir detalizēti piemēri, lai izskaidrotu Tuple VS ValueTuple 10 minūtēs, lai labāk izprastu ValueTuple priekšrocības un izmantošanu.

Ja jūs pietiekami zināt par Tuple, varat izlaist sadaļu "Review Tuple" un doties tieši uz sadaļu "ValueTuple Explained", lai redzētu žilbinošo vērtību tuple lietojumu.



Atskatieties uz Tuple

Tuple ir jauna funkcija, kas iznāca kopā ar C# 4.0 un ir pieejama .Net Framework 4.0 un jaunākās versijās.

Tuple ir datu struktūra ar noteiktu elementu skaitu un secību. Piemēram, izstrādājiet trīskāršu datu struktūru, lai saglabātu studentu informāciju, kas satur trīs elementus, pirmais ir vārds, otrais ir vecums un trešais ir augstums.

Specifiskie tuple izmantošanas veidi ir šādi:

1. Kā izveidot tupeli

Noklusējums. Tīkla ietvarsTuples atbalsta tikai 1 līdz 7 tuple elementusJa ir 8 vai vairāk elementi, jums jāizmanto Tuple ligzdošanas un atpūtas rekvizīti, lai to ieviestu. Turklāt Tuple klase nodrošina statisku metodi tuple objektu izveidei.

Izveidojiet tuples, izmantojot konstruktorus:

Veidojiet tuples, izmantojot Tuple statisko metodi, atbalstot līdz astoņiem elementiem:
Piezīme: Šeit izveidotais Tuple tips faktiski ir Tuple<int, int, int, int, Tuple<int>>, tāpēc datu tips, ko iegūst testTuple8.Rest, ir Tuple<int>, tāpēc, lai iegūtu precīzu vērtību, jums ir jāizmanto rekvizīts Item1.

2. Attēlo datu kopu
Zemāk izveidojiet tupeli, lai attēlotu trīs informācijas vienības par skolēnu: vārdu, vecumu un augumu, atsevišķi neveidojot papildu klasi.

3. Vairāku vērtību atgriešana no metodes
Ja funkcijai ir jāatgriež vairākas vērtības, parasti var izmantot parametru out, un tuples var izmantot out vietā, lai atgrieztu vairākas vērtības.
4. Vairāku vērtību pārsūtīšana viena parametra metodēm

Ja funkcijas parametrs ir tikai viens objekta tips, vairākas parametru vērtības var tikt nodotas, izmantojot tuple ieviešanu.

Neskatoties uz iepriekš minētajām ērtajām metodēm, tupelēm ir arī būtiski trūkumi:

  • Piekļūstot elementiem, tiem var piekļūt tikai, izmantojot ItemX, un pirms lietošanas jums ir jāprecizē elementu secība, un atribūtu nosaukumiem nav praktiskas nozīmes, kas ir neērti atcerēties.
  • Ir līdz astoņiem elementiem, un, ja vēlaties vairāk, varat paplašināt tikai ligzdojot ar pēdējo elementu;
  • Tuple ir atsauces tips, nevis vērtību tips kā citi vienkārši tipi, kas piešķir vietu kaudzē un var būt pārāk daudz izveides un sadales darba, kad CPU intensīvs.


Tāpēc C# 7.0 tika ieviests jauns ValueTuple tips, kas ir detalizēti aprakstīts nākamajās sadaļās.

ValueTuple detalizēti izskaidro

ValueTuple ir viena no jaunajām C# 7.0 funkcijām, kas pieejama .Net Framework 4.7 un jaunākām versijām.

ValueTuple neprasa 4.7, kamēr nuget ir labi, 4.7 ir iebūvēts.
Turklāt ValueTuple ir struktūras tips, Microsoft iesaka neizmantot struktūras, kas pārsniedz 64 baitus, kas ir efektīvs arī ValueTuple.


Vērtību tuple ir arī datu struktūra, ko izmanto, lai attēlotu noteiktu elementu skaitu un secību, taču tā atšķiras no tuple klases ar šādām galvenajām atšķirībām:

Vērtību tuple ir struktūra, vērtības tips, nevis klase, bet tuple ir klase, atsauces tips;
Vērtību tuple elementi ir mainīgi, nevis tikai lasāmi, tas ir, tie var mainīt elementa vērtību tuple;
Datu elementu vērtību tuplis ir lauks, nevis atribūts.
Vērtību tuples īpašs lietojums ir šāds:

1. Kā izveidot vērtību tuple
Tāpat kā tuple klases, .Net Framework vērtību tuples atbalsta tikai 1 līdz 7 tuple elementus, un, ja ir 8 vai vairāk elementi, jums ir jāizmanto vērtību tuple ligzdotie un Rest rekvizīti, lai to ieviestu. Turklāt ValueTuple klase var nodrošināt statiskas metodes vērtību tuple objektu izveidei.

Izveidojiet tuples, izmantojot konstruktorus:

Veidojiet tuples, izmantojot Tuple statisko metodi, atbalstot līdz astoņiem elementiem:
Ņemiet vērā, ka šeit izveidotais Tuple tips faktiski ir Tuple<int, int, <int>>, tāpēc testTuple8.Rest iegūtais datu tips ir Tuple<int>, tāpēc, lai iegūtu precīzu vērtību, jums jāizmanto rekvizīts Item1.

Optimizācijas atšķirība:Ja ir izveidota vērtību tuple ar vairāk nekā 7 elementiem, ligzdotās tuples vērtībām var piekļūt, izmantojot tālāk norādīto ItemX un iepriekš minētajā piemērā, lai piekļūtu desmitajam elementam, izmantojot testTuple10.Rest.Item3 vai testTuple10.Item10.
2. Attēlo datu kopu
Izveidojiet vērtību tupeli, lai attēlotu trīs informācijas vienības par skolēnu: vārdu, vecumu un augumu, atsevišķi neizveidojot papildu klasi.
3. Vairāku vērtību atgriešana no metodes
Vērtību tuples var arī atgriezt vairākas vērtības funkcijas definīcijas parametra out vietā.
Optimizācijas atšķirība:Atgriezto vērtību ValueTuple var norādīt neizskaidrojami, tā vietā izmantojot jaunu sintaksi (,,), piemēram, (string, int, uint):
StudentInfo tipa atkļūdošana ir ValueType triplets.

Optimizācijas atšķirība:Atgrieztā vērtība var norādīt elementa nosaukumu, lai atvieglotu izpratni par atmiņas piešķiršanu un piekļuvi:

Ērta atmiņas piešķiršana:



4. Vairāku vērtību pārsūtīšana viena parametra metodēm
Ja funkcijas parametrs ir tikai viens objekta tips, vairākas vērtības var tikt nodotas, izmantojot vērtību tuple ieviešanu.
5. Dekonstruējiet ValueTuple
Jūs varat izmantot var (x, y) vai (var x, var y), lai atrisinātu tuple elementus, lai izveidotu lokālos mainīgos, vienlaikus izmantojot simbolu "_", lai ignorētu nevēlamus elementus.
Kā minēts iepriekš, ValueTuple padara C# vienkāršāku un vieglāk lietojamu. Galvenās priekšrocības salīdzinājumā ar Tuple ir šādas:

  • ValueTuple atbalsta jaunu sintaksi funkcijas atgrieztajām vērtībām" (,,)", padarot kodu vienkāršāku;
  • Šeit jāatzīmē, ka, lai gan tas ir nosaukts, bet patiesībā vērtības tuple nedefinē šāda nosaukuma atribūtu vai lauku, īstais vārds joprojām ir ItemX, un visi elementu nosaukumi tiek izmantoti tikai projektēšanas un kompilēšanas laikā, nevis izpildlaikā (tāpēc pievērsiet uzmanību šāda veida serializācijas un deserializācijas operācijām);
  • Dažus vai visus elementu tuples var ērtāk izmantot, izmantojot iznīcināšanas metodes;
  • Vērtību tuples ir vērtību tipi, kurus ir efektīvāk izmantot nekā atsauces tipu tuples, un vērtību tupelēm ir salīdzināšanas metode, ko var izmantot, lai salīdzinātu, vai tās ir vienādas, skatiet sadaļu Detalizēta informācija:https://msdn.microsoft.com/en-us/library/system.valuetuple






Iepriekšējo:Zinātnes popularizēšanas rīki liela mēroga arhitektūrām
Nākamo:HUAWEI CLOUD izdod blokķēdes balto grāmatu, lai paātrinātu blokķēdes tehnoloģiju nozares ieviešanu
Publicēts 15.05.2018 11:41:00 |
Es piekrītu!
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com