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.

❌ DO NOT neposkytuje 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 kopírování mutují, 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 je stav, ve kterém jsou všechna data instance nastavená na nulu, false nebo null (podle potřeby).

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í velmi efektivní, protože používá reflexi. Equals může mít mnohem lepší výkon a lze jej implementovat, aby nezpůsoboval boxování.

❌ DO NOT explicitně rozšířit 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 2005, 2009 Microsoft Corporation. Všechna práva vyhrazena.

Reprinted by permission of Pearson Education, Inc. from Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition by Krzysztof Cwalina and Brad Abrams, published Oct 22, 2008 by Addison-Wesley Professional v rámci Microsoft Windows Development Series.

Viz také