Dela via


Struct-design

Kommentar

Det här innehållet skrivs om med behörighet från Pearson Education, Inc. från Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition. Den utgåvan publicerades 2008, och boken har sedan dess reviderats helt i den tredje utgåvan. En del av informationen på den här sidan kan vara inaktuell.

Den allmänna värdetypen kallas oftast för en struct, dess C#-nyckelord. Det här avsnittet innehåller riktlinjer för allmän strukturdesign.

❌ Ange INTE en parameterlös konstruktor för en struct.

Genom att följa den här riktlinjen kan matriser med structs skapas utan att konstruktorn behöver köras på varje objekt i matrisen. Observera att C# inte tillåter att structs har parameterlösa konstruktorer.

❌ Definiera INTE föränderliga värdetyper.

Föränderliga värdetyper har flera problem. När en egenskaps getter till exempel returnerar en värdetyp får anroparen en kopia. Eftersom kopian skapas implicit kanske utvecklare inte är medvetna om att de muterar kopian och inte det ursprungliga värdet. Vissa språk (särskilt dynamiska språk) har dessutom problem med att använda föränderliga värdetyper eftersom även lokala variabler, när derefereras, gör att en kopia görs.

✔️ Kontrollera att ett tillstånd där alla instansdata är inställda på noll, falskt eller null (efter behov) är giltigt.

Detta förhindrar oavsiktligt skapande av ogiltiga instanser när en matris med structarna skapas.

✔️ Implementera på IEquatable<T> värdetyper.

Metoden Object.Equals för värdetyper orsakar boxning och dess standardimplementering är inte särskilt effektiv eftersom den använder reflektion. Equals kan ha mycket bättre prestanda och kan implementeras så att det inte orsakar boxning.

❌ UTÖKA ValueTypeINTE uttryckligen . I själva verket förhindrar de flesta språk detta.

I allmänhet kan structs vara mycket användbara men bör endast användas för små, enkla, oföränderliga värden som inte boxas ofta.

Portioner © 2005, 2009 Microsoft Corporation. Med ensamrätt.

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, publicerad 22 okt 2008 av Addison-Wesley Professional som en del av Microsoft Windows Development Series.

Se även