Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 24117|Odpověď: 1

[Zdroj] Podrobné vysvětlení n-tice C# VS ValueTuple

[Kopírovat odkaz]
Zveřejněno 14.05.2018 16:37:48 | | | |
C# 7.0 je už nějakou dobu na trhu a všichni vědí, že nová funkce: ValueTuple, nabízí optimalizaci pro n-tice. Zde jsou podrobné příklady, které vysvětlí Tuple VS ValueTuple během 10 minut, abyste lépe pochopili výhody a využití ValueTuple.

Pokud o n-tici víte dost, můžete přeskočit sekci "Review Tuple" a jít rovnou do sekce "ValueTuple Explained", kde vidíte oslnivé využití hodnotových n-tic.



Podívejte se zpět na Tuple

Tuple je nová funkce, která vyšla s C# 4.0 a je dostupná v .Net Framework 4.0 a novějších.

N-tice je datová struktura s konkrétním počtem a posloupností prvků. Například navrhněte trojitou datovou strukturu pro ukládání informací o studentech, která obsahuje celkem tři prvky: první je jméno, druhý věk a třetí výška.

Specifické využití n-tic je následující:

1. Jak vytvořit n-tici

Výchozí. Net FrameworkN-tice podporují pouze 1 až 7 prvků n-ticPokud je 8 prvků nebo více, musíte použít vlastnosti vnoření a odpočinku n-tic k jeho implementaci. Kromě toho třída n-tic poskytuje statickou metodu pro vytváření objektů n-tic.

Vytvářejte n-tice pomocí konstruktorů:

Konstruujte n-tice pomocí statické metody n-tic, podporující až osm prvků:
Poznámka: Typ n-tice vytvořený zde je ve skutečnosti Tuple<int, int, int, int, Tuple<int>>, takže datový typ získaný testTuple8.Rest je Tuple<int>, takže pro získání přesné hodnoty je potřeba vzít vlastnost Item1.

2. Představuje množinu dat
Vytvořte níže n-tici, která bude reprezentovat tři informace o studentovi: jméno, věk a výšku, aniž byste vytvářeli další třídu zvlášť.

3. Vraťte více hodnot z metody
Když funkce potřebuje vracet více hodnot, lze obecně použít parametr výstupu a n-tice lze použít místo výstupu k vrácení více hodnot.
4. Vícehodnotový přenos pro metody s jedním parametrem

Pokud je parametr funkce pouze jeden typ objektu, lze pomocí implementace n-tice předat více hodnot parametrů.

Navzdory výše zmíněným praktickým metodám mají n-tice také významné nedostatky:

  • Při přístupu k prvkům k nim můžete přistupovat pouze přes ItemX a je potřeba si před použitím upřesnit pořadí prvků, přičemž názvy atributů nemají žádný praktický význam, což je nepříjemné si zapamatovat.
  • Je zde až osm prvků, a pokud chcete víc, můžete se rozšířit pouze vnořením s posledním prvkem;
  • N-tice je referenční typ, nikoli typ hodnoty jako jiné jednoduché typy, které přidělují místo na haldě a při náročnosti CPU mohou mít příliš mnoho práce na vytváření a alokaci.


Proto byl v C# 7.0 zaveden nový typ ValueTuple, který je podrobně popsán v následujících sekcích.

ValueTuple to podrobně vysvětluje

ValueTuple je jednou z nových funkcí C# 7.0, dostupnou pro .Net Framework 4.7 a novější.

ValueTuple nevyžaduje 4.7, pokud je nuget v pořádku, 4.7 je vestavěný.
Navíc ValueTuple je typ struktury, Microsoft doporučuje nepoužívat struktury nad 64 bajtů, což je účinné i pro ValueTuple.


N-tice hodnoty je také datová struktura používaná k reprezentaci konkrétního počtu a posloupnosti prvků, ale liší se od třídy n-tic a má následující hlavní rozdíly:

N-tice s hodnotou je struktura, typ hodnoty, nikoli třída, zatímco n-tice je třída, referenční typ;
Prvky n-tice jsou proměnné, nejsou pouze pro čtení, tedy mohou měnit hodnotu prvku v n-tici;
N-tice datových členů je pole, nikoli atribut.
Specifické použití hodnotových tic je následující:

1. Jak vytvořit hodnotovou n-tici
Stejně jako třídy n-tic, i n-tice hodnot v .Net Frameworku podporují pouze 1 až 7 prvků, a pokud je jich 8 nebo více, musíte použít vnořené a Rest vlastnosti n-tice hodnoty k implementaci. Kromě toho třída ValueTuple může poskytovat statické metody pro vytváření objektů hodnotových n-tic.

Vytvářejte n-tice pomocí konstruktorů:

Konstruujte n-tice pomocí statické metody n-tic, podporující až osm prvků:
Všimněte si, že zde vytvořený typ n-tice je ve skutečnosti Tuple<int, int, <int>>, takže datový typ získaný testTuple8.Rest je Tuple<int>, takže pro získání přesné hodnoty je nutné vzít vlastnost Item1.

Rozdíl v optimalizaci:Když je vytvořena n-tice hodnot s více než 7 prvky, lze k hodnotám v vnořené n-tici přistupovat pomocí následující položky X a v příkladu výše k přístupu k desátému prvku, buď přes testTuple10.Rest.Item3 nebo testTuple10.Item10.
2. Představuje množinu dat
Vytvořte n-tici hodnot, která reprezentuje tři informace o studentovi: jméno, věk a výšku, aniž byste vytvářeli další třídu zvlášť.
3. Vraťte více hodnot z metody
N-tice hodnot mohou také vracet více hodnot místo výstupního parametru v definici funkce.
Rozdíl v optimalizaci:Vrácenou hodnotu lze v ValueTuple nevysvětlitelně zadat pomocí nové syntaxe (,,), například (string, int, uint):
Ladění typu studentInfo je trojice ValueType.

Rozdíl v optimalizaci:Vrácená hodnota může specifikovat název prvku, aby bylo možné lépe pochopit přiřazení a přístup k paměti:

Pohodlné přiřazení paměti:



4. Vícehodnotový přenos pro metody s jedním parametrem
Pokud je parametr funkce pouze jedním typem objektu, lze pomocí implementace n-tice předat více hodnot.
5. Dekonstruujte hodnotovou tici
Můžete použít var (x, y) nebo (var x, var y) k vyřešení prvků n-tice pro vytvoření lokálních proměnných, zatímco symbol "_" můžete použít k ignorování nežádoucích prvků.
Jak bylo zmíněno výše, ValueTuple usnadňuje a usnadňuje používání C#. Hlavní výhody oproti n-tici jsou následující:

  • ValueTuple podporuje novou syntaxi pro hodnoty vrácených funkcí" (,,)", což kód zjednodušuje;
  • Je třeba poznamenat, že ačkoliv je n-tice pojmenována, ve skutečnosti n-tice nedefinuje atribut nebo pole takového jména, skutečné jméno je stále ItemX a všechny názvy prvků se používají pouze při návrhu a kompilaci, nikoli za běhu (proto věnujte pozornost operacím serializace a deserializace tohoto typu);
  • Některé nebo všechny n-tice prvků lze pohodlněji použít pomocí destrukčních metod;
  • N-tice s hodnotami jsou typy hodnot, které jsou efektivnější na použití než n-tice referenčních typů, a n-tice mají srovnávací metodu, která umožňuje porovnat, zda jsou si rovné, viz Podrobnosti:https://msdn.microsoft.com/en-us/library/system.valuetuple






Předchozí:Nástroje pro popularizaci vědy pro velkoplošné architektury
Další:HUAWEI CLOUD zveřejnil Whitebook o blockchainu, který urychluje implementaci blockchainových technologií v odvětví
Zveřejněno 15.05.2018 11:41:00 |
Souhlasím!
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com