c# clases - ¿Usar una clase privada en lugar de un campo-rendimiento / penalización de memoria?




que static (3)

Lo corto y lo largo de eso es, no. La clase CustomType es por definición un Dictionary<int, SomeOtherCustomType> y, por lo tanto, se asignará como tal.

Esto es particularmente cierto porque literalmente no hay implementación para la clase.

Estoy revisando el código de alguien y me encontré con esta clase privada:

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

CustomType se utiliza en toda la clase principal. Esto es claro, por supuesto, ya que CustomType es más corto que

Dictionary<int, SomeOtherCustomType>

Mi pregunta es, ¿cuáles son las implicaciones de rendimiento / memoria de tener una clase interna solo como atajo? En una aplicación sensible al rendimiento, ¿esto contribuye (incluso ligeramente) a un mayor uso de memoria y / o CPU?


A menos que haya otra razón para definir un tipo personalizado, sugeriría cambiarlo a una declaración de uso.

using CustomType = Dictionary<int, SomeOtherCustomType>;

Simplemente define un alias para el diccionario y puede ser muy útil si está consumiendo algunas clases parametrizadas complicadas.

Esto elimina la necesidad de declarar un nuevo tipo, ya que, como el código se encuentra en el momento, fallaría lo siguiente.

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

Sin embargo, funcionaría si usas un alias en su lugar.


Las propiedades proporcionan algunas características automáticas muy buenas (como Json y serialización Xml)

Los campos no lo hacen.

Las propiedades también pueden ser parte de una interfaz. Si decides refactorizar más tarde ... esto también podría ser algo a considerar.







c# .net