Share via


Ontwerp van struct

Notitie

Deze inhoud wordt opnieuw afgedrukt door toestemming van Pearson Education, Inc. van Framework Design Guidelines: Conventions, Idioms en Patterns for Reusable .NET Libraries, 2nd Edition. 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 het algemene ontwerp van de struct.

❌ 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 dempen van de kopie en niet van de oorspronkelijke waarde. Bovendien hebben sommige talen (dynamische talen, met name) problemen met het gebruik van veranderlijke waardetypen, omdat zelfs lokale variabelen, wanneer deductie wordt gededucteerd, 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.

✔️ DO implementeer IEquatable<T> op waardetypen.

De Object.Equals methode voor waardetypen veroorzaakt boksen en de standaard implementatie is niet erg efficiënt, omdat er weerspiegeling wordt gebruikt. Equals kan veel betere prestaties hebben en kan worden geïmplementeerd, zodat het geen boksen 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.

© Delen 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, published oct 22, 2008 by Addison-Wesley Professional als onderdeel van de Microsoft Windows Development Series.

Zie ook