Sdílet prostřednictvím


Návrh struktury

Poznámka:

Tento obsah je znovu vytištěn oprávněním Pearson Education, Inc. z Framework Design Guidelines: Conventions, Idioms a Patterns for Reusable .NET Libraries, 2. vydání. Tato edice byla publikována v roce 2008 a kniha byla od té doby plně upravena ve třetím vydání. Některé informace na této stránce můžou být zastaralé.

Typ hodnoty pro obecné účely se nejčastěji označuje jako struktura, klíčové slovo jazyka C#. Tato část obsahuje pokyny pro obecné návrh struktury.

❌ Neposkytujte konstruktor bez parametrů pro strukturu.

Následující pokyny umožňují vytvářet pole struktur, aniž by bylo nutné spouštět konstruktor pro každou položku pole. Všimněte si, že jazyk C# neumožňuje strukturám používat konstruktory bez parametrů.

❌ NEdefinujte proměnlivé typy hodnot.

Proměnlivé typy hodnot mají několik problémů. Například když getter vlastnosti vrátí typ hodnoty, volající obdrží kopii. Vzhledem k tomu, že se kopie vytváří implicitně, vývojáři nemusí vědět, že mutují kopii, a ne původní hodnotu. Některé jazyky (zejména dynamické jazyky) mají problémy s používáním proměnlivých typů hodnot, protože i místní proměnné při dereference způsobí vytvoření kopie.

✔️ Ujistěte se, že stav, kdy jsou všechna údaje instance nastavena na nulu, nepravda, nebo neplatná hodnota (dle potřeby), je platný.

To zabrání náhodnému vytvoření neplatných instancí při vytvoření pole struktur.

✔️ Proveďte implementaci IEquatable<T> u typů hodnot.

Metoda Object.Equals pro typy hodnot způsobuje boxing a její výchozí implementace není příliš efektivní, protože používá reflexi. Equals může mít mnohem lepší výkon a lze jej implementovat tak, aby nedocházelo k boxování.

❌ NEROZŠIŘUJTE explicitně ValueType. Většina jazyků tomu ve skutečnosti brání.

Obecně platí, že struktury mohou být velmi užitečné, ale měly by být použity pouze pro malé, jednoduché neměnné hodnoty, které nebudou často rozděleny do rámečku.

Části z © 2005, 2009 Microsoft Corporation. Všechna práva vyhrazena.

Přetištěno se svolením Pearson Education, Inc. z Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition od Krzysztofa Cwaliny a Brada Abramse, vydáno 22. října 2008 nakladatelstvím Addison-Wesley Professional jako součást série Microsoft Windows Development.

Viz také