Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 24117|Odgovoriti: 1

[Vir] Podrobna razlaga C# Tuple VS ValueTuple

[Kopiraj povezavo]
Objavljeno na 14. 05. 2018 16:37:48 | | | |
C# 7.0 je na voljo že nekaj časa in vsi vedo, da nova funkcija: ValueTuple, ponuja optimizacijo za n-tice. Tukaj so podrobni primeri, ki v 10 minutah razložijo Tuple proti ValueTuple, da bolje razumemo prednosti in uporabo ValueTuple.

Če veste dovolj o n-toricah, lahko preskočite razdelek "Pregledaj n-torice" in greste neposredno na razdelek "ValueTuple Explained", da vidite osupljivo uporabo vrednostnih n-toric.



Poglejte nazaj na Tuple

Tuple je nova funkcija, ki je izšla s C# 4.0 in je na voljo v .Net Framework 4.0 in novejših.

N-torica je podatkovna struktura s specifičnim številom in zaporedjem elementov. Na primer, oblikujte trojno podatkovno strukturo za shranjevanje informacij o učencu, ki vsebuje skupaj tri elemente: prvi je ime, drugi starost in tretji višina.

Specifične uporabe n-tic so naslednje:

1. Kako ustvariti n-tico

Privzeto. Net FrameworkN-n-te podpirajo le 1 do 7 elementov n-n--aČe je 8 elementov ali več, morate uporabiti lastnosti gnezdenja in počivanja v Tuple, da to implementirate. Poleg tega razred Tuple zagotavlja statično metodo za ustvarjanje tuple objektov.

Ustvarite n-tice z uporabo konstruktorjev:

Zgradimo n-tice z uporabo n-tic statične metode, ki podpirajo do osem elementov:
Opomba: Tip Tuple, ki je tukaj, je pravzaprav Tuple<int, int, int, int, Tuple<int>>, zato je podatkovni tip, ki ga pridobi testTuple8.Rest, Tuple<int>, zato za natančno vrednost vzamemo lastnost Item1.

2. Predstavlja nabor podatkov
Spodaj ustvarite vodico, ki predstavlja tri informacije o učencu: ime, starost in višino, brez posebej ustvarjanja dodatnega razreda.

3. Vrni več vrednosti iz metode
Ko mora funkcija vrniti več vrednosti, se običajno uporabi parameter out, in namesto out se lahko uporabijo n-torice za vračilo več vrednosti.
4. Večvrednostni prenos za enoparametrične metode

Ko je parameter funkcije le en tip objekta, je mogoče z uporabo implementacije torice prenesti več vrednosti parametrov.

Kljub zgoraj omenjenim priročnim metodam imajo n-torice tudi pomembne pomanjkljivosti:

  • Pri dostopu do elementov lahko dostopate le prek ItemX, pred uporabo pa morate pojasniti vrstni red elementov, imena atributov pa nimajo praktičnega pomena, kar je neprijetno za zapomnitev.
  • Na voljo je do osem elementov, in če želite več, se lahko razširite le z gnezdenjem z zadnjim elementom;
  • Tuple je referenčni tip, ne vrednostni tip kot druge preproste vrste, ki razporeja prostor na kupu in lahko zahteva preveč ustvarjanja in dodeljevanja, kadar je zahteven za procesor.


Zato je bil v C# 7.0 uveden nov tip ValueTuple, ki je podrobno opisan v naslednjih poglavjih.

ValueTuple podrobno pojasnjuje

ValueTuple je ena izmed novih funkcij C# 7.0, ki je na voljo za .Net Framework 4.7 in novejše.

ValueTuple ne zahteva 4,7, dokler je nuget v redu, je 4,7 vgrajen.
Poleg tega je ValueTuple tip strukture, Microsoft priporoča, da se strukture ne uporabljajo nad 64 bajtov, kar je učinkovito tudi za ValueTuple.


Vrednostna torica je prav tako podatkovna struktura, ki se uporablja za predstavitev določenega števila in zaporedja elementov, vendar se razlikuje od razreda n-tic, z naslednjimi glavnimi razlikami:

Vrednostna n-torica je struktura, tip vrednosti, ne razred, medtem ko je n-torica razred, referenčni tip;
Elementi vrednostnih n-toric so spremenljivi, ne samo za branje, torej lahko spremenijo vrednost elementa v n-rice;
Vrednostna torica podatkovnih članov je polje, ne atribut.
Specifična uporaba vrednostnih n-tic je naslednja:

1. Kako ustvariti vrednostno n-tico
Tako kot razredi n-toric tudi .Net Framework vrednostni n-tori podpirajo le 1 do 7 elementov n-tic, in če jih je 8 ali več, morate za implementacijo uporabiti gnezdene in Rest lastnosti n-tice vrednosti. Poleg tega lahko razred ValueTuple zagotovi statične metode za ustvarjanje objektov vrednostnih tuple.

Ustvarite n-tice z uporabo konstruktorjev:

Zgradimo n-tice z uporabo n-tic statične metode, ki podpirajo do osem elementov:
Upoštevajte, da je tukaj konstruiran tip Tuple pravzaprav Tuple<int, int, <int>>, zato je podatkovni tip, pridobljen s testTuple8.Rest, Tuple<int>, zato za natančno vrednost potrebujemo lastnost Item1.

Razlika v optimizaciji:Ko je zgrajena n-torica z več kot 7 elementi, je mogoče do vrednosti v gnezdeni n-torici dostopati z uporabo naslednjega ItemX, in za zgornji primer za dostop do desetega elementa, bodisi preko testTuple10.Rest.Item3 ali testTuple10.Item10.
2. Predstavlja nabor podatkov
Ustvarite nizek vrednosti, ki predstavljajo tri informacije o učencu: ime, starost in višino, brez posameznega ustvarjanja dodatnega razreda.
3. Vrni več vrednosti iz metode
Vrednostne n-torke lahko vrnejo več vrednosti namesto izhodnega parametra v definiciji funkcije.
Razlika v optimizaciji:Povratno vrednost je mogoče nepojasnjeno določiti v ValueTuple, namesto tega z novo sintakso (,,), kot je (string, int, uint):
Odpravljanje napak tipa študentInfo je triplet ValueType.

Razlika v optimizaciji:Povratna vrednost lahko določi ime elementa za lažje razumevanje dodelitve in dostopa do pomnilnika:

Priročna dodelitev pomnilnika:



4. Večvrednostni prenos za enoparametrične metode
Ko je funkcijski parameter le en tip objekta, je mogoče z implementacijo vrednostnega tupla prenesti več vrednosti.
5. Dekonstruirajte vrednostno torico
Za razrešitev elementov n-tic, da se zgradijo lokalne spremenljivke, lahko uporabite var (x, y) ali (var x, y), medtem ko uporabite simbol "_" za ignoriranje nezaželenih elementov.
Kot je bilo omenjeno zgoraj, ValueTuple naredi C# enostavnejši in lažji za uporabo. Glavne prednosti pred n-terko so naslednje:

  • ValueTuple podpira novo sintakso za vrnitve funkcij" (,,)", kar poenostavi kodo;
  • Tukaj je treba poudariti, da čeprav je poimenovan, vendar vrednostna n-torica dejansko ne določa atributa ali polja takšnega imena, je pravo ime še vedno ItemX, vsa imena elementov pa se uporabljajo le med načrtovanjem in prevajanjem, ne pa med izvajanjem (zato bodite pozorni na operacije serializacije in deserializacije tega tipa);
  • Nekatere ali vse n-torice elementov je mogoče uporabiti bolj priročno z metodami uničenja;
  • Vrednostne n-torke so vrste vrednosti, ki so učinkovitejše za uporabo kot n-n--rice referenčnih tipov, in n-torke vrednosti imajo metodo primerjave, s katero lahko primerjamo, ali so enake, glej Podrobnosti:https://msdn.microsoft.com/en-us/library/system.valuetuple






Prejšnji:Orodja za popularizacijo znanosti za velike arhitekture
Naslednji:HUAWEI CLOUD izdaja belo knjigo o blockchainu za pospešitev uvajanja industrije blockchain tehnologije
Objavljeno na 15. 05. 2018 11:41:00 |
Se strinjam!
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com