28 votes

Utiliser une classe privée à la place d'un champ - pénalité performances / mémoire?

J'examine le code de quelqu'un et suis tombé sur cette classe privée:

 class CustomType : Dictionary<int, SomeOtherCustomType>
{
    // This is empty; nothing omitted here
}
 

CustomType est ensuite utilisé partout dans la classe parente. C'est bien sûr bien sûr, puisque CustomType est plus court que

 Dictionary<int, SomeOtherCustomType>
 

Ma question est, quelles sont les implications de performances / mémoire d'avoir une classe interne juste pour un raccourci? Dans une application sensible aux performances, cela contribue-t-il (même légèrement) à une utilisation accrue de la mémoire et / ou du processeur?

50voto

Doctor Jones Points 11502

À moins qu'il n'y ait une autre raison pour définir un type personnalisé, je suggère de le remplacer par une instruction using.

 using CustomType = Dictionary<int, SomeOtherCustomType>;
 

Il définit simplement un alias pour le dictionnaire et peut être très utile si vous consommez des classes paramétrées compliquées.

Cela élimine le besoin de déclarer un nouveau type, car dans l'état actuel du code, ce qui suit échouerait.

 CustomType dictionary = new Dictionary<int, SomeOtherCustomType>(); //custom type is a different class and can't be instantiated with a dictionary
 

Cependant, cela fonctionnerait si vous utilisez un alias à la place.

15voto

Michael Perrenoud Points 37869

Le court et le long, non. La classe CustomType est par définition un Dictionary<int, SomeOtherCustomType> et donc elle sera allouée comme telle.

Cela est particulièrement vrai car il n'y a littéralement aucune implémentation pour la classe.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X