Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Remarque
Ce contenu est réimprimé avec l’autorisation de Pearson Education, Inc. tiré de Lignes directrices de conception de framework : Conventions, Idiomes et Modèles pour les bibliothèques .NET réutilisables, 2ème édition. Cette édition a été publiée en 2008, et le livre a été entièrement révisé dans la troisième édition. Certaines informations de cette page peuvent être obsolètes.
Le type de valeur à usage général est le plus souvent appelé struct, son mot clé C#. Cette section fournit des instructions pour la conception générale de la structure.
❌ Ne fournissez pas de constructeur sans paramètre pour un struct.
En suivant cette directive, des tableaux de structures peuvent être créés sans avoir à exécuter le constructeur sur chaque élément du tableau. Notez que C# n’autorise pas les structs à avoir des constructeurs sans paramètre.
❌ NE DÉFINISSEZ PAS les types valeur mutables.
Les types valeur mutables présentent plusieurs problèmes. Par exemple, lorsqu’un accesseur get retourne un type valeur, l’appelant reçoit une copie. Étant donné que la copie est créée implicitement, les développeurs peuvent ne pas savoir qu’ils mutent la copie, et non la valeur d’origine. En outre, certains langages (langages dynamiques, en particulier) présentent des problèmes à l’aide de types de valeurs mutables, car même les variables locales, lorsqu’elles sont déréférées, provoquent une copie.
✔️ Assurez-vous qu’un état dans lequel toutes les données d’instance sont définies sur zéro, false ou null (le cas échéant) est valide.
Cela empêche la création accidentelle d’instances non valides lorsqu’un tableau des structs est créé.
✔️ Implémentez IEquatable<T> sur les types valeur.
La méthode Object.Equals sur les types valeur entraîne un boxing et son implémentation par défaut n’est pas très efficace car elle utilise la réflexion. Equals peut offrir de bien meilleures performances et être implémentée de manière à éviter le boxing.
❌ NE PAS étendre ValueType (explicitement). En fait, la plupart des langues empêchent cela.
En général, les structs peuvent être très utiles, mais ne doivent être utilisés que pour des petites valeurs immuables et uniques qui ne seront pas fréquemment encapsulées.
Portions © 2005, 2009 Microsoft Corporation. Tous les droits réservés.
Réimprimé par l’autorisation de Pearson Education, Inc. tiré de Framework Design Guidelines : Conventions, Idioms et Patterns pour les bibliothèques .NET réutilisables, 2e édition par Krzysztof Cwalina et Brad Abrams, publié le 22 octobre 2008 par Addison-Wesley Professional dans le cadre de la Série de développement Microsoft Windows.