Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Anmärkning
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 mottar 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.
✔️ Se till att implementera IEquatable<T> för värdetyper.
Metoden Object.Equals för värdetyperna 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 inte ValueType uttryckligen. I själva verket förhindrar de flesta språk detta.
I allmänhet kan strukturer vara mycket användbara, men bör endast användas för små, enkla, oföränderliga värden som inte lådas ofta.
Portioner © 2005, 2009 Microsoft Corporation. Alla rättigheter reserverade.
Återtryckt med tillstånd från Pearson Education, Inc. från Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition av Krzysztof Cwalina och Brad Abrams, publicerades den 22 oktober 2008 av Addison-Wesley Professional som en del av Microsoft Windows Development Series.