Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Opmerking
Deze inhoud wordt opnieuw afgedrukt met toestemming van Pearson Education, Inc. uit Framework Design Guidelines: Conventies, idioom en patronen voor herbruikbare .NET-bibliotheken, 2e editie. Die editie werd in 2008 gepubliceerd en het boek is sindsdien volledig herzien in de derde editie. Sommige informatie op deze pagina is mogelijk verouderd.
Het waardetype voor algemeen gebruik wordt meestal aangeduid als een struct, het bijbehorende C#-trefwoord. Deze sectie bevat richtlijnen voor algemeen ontwerp van de structuur.
❌ GEEF GEEN parameterloze constructor op voor een struct.
Aan de hand van deze richtlijn kunnen matrices van structs worden gemaakt zonder dat u de constructor hoeft uit te voeren op elk item van de matrix. U ziet dat C# geen structs toestaat om parametersloze constructors te hebben.
❌ DEFINIEER GEEN onveranderbare waardetypen.
Veranderlijke waardetypen hebben verschillende problemen. Wanneer een eigenschap getter bijvoorbeeld een waardetype retourneert, ontvangt de beller een kopie. Omdat de kopie impliciet wordt gemaakt, is het mogelijk dat ontwikkelaars zich niet bewust zijn van het wijzigen van de kopie en niet van de oorspronkelijke waarde. Bovendien hebben sommige talen (met name dynamische talen) problemen omdat ze veranderlijke waardetypen gebruiken, omdat zelfs lokale variabelen, wanneer ze worden gedereferenceerd, ervoor zorgen dat er een kopie wordt gemaakt.
✔️ Zorg ervoor dat een status waarin alle exemplaargegevens zijn ingesteld op nul, onwaar of null (indien van toepassing) geldig is.
Dit voorkomt dat er per ongeluk ongeldige exemplaren worden gemaakt wanneer een matrix van de structs wordt gemaakt.
✔️ Voer IEquatable<T> uit op waardetypen.
De Object.Equals methode voor waardetypen veroorzaakt "boxing" en de standaardimplementatie is niet erg efficiënt, omdat er reflectie wordt gebruikt. Equals kan aanzienlijk betere prestaties leveren en kan zo worden geïmplementeerd dat het geen boxing veroorzaakt.
❌ BREID NIET expliciet uit ValueType. In feite voorkomen de meeste talen dit.
Over het algemeen kunnen structs zeer nuttig zijn, maar mogen alleen worden gebruikt voor kleine, enkele, onveranderbare waarden die niet vaak worden geplaatst.
© Gedeelten 2005, 2009 Microsoft Corporation. Alle rechten voorbehouden.
Herdrukt door toestemming van Pearson Education, Inc. van Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition by Krzysztof Cwalina and Brad Abrams, gepubliceerd 22 oktober 2008 door Addison-Wesley Professional als onderdeel van de Microsoft Windows Development Series.