2011-06-10 14 views
16

Recibió una especificación para agregar más de 800 propiedades a un objeto. ¿Hay algún "límite" para la cantidad de Propiedades que un objeto puede tener en C# (o .NET)?¿Hay algún límite en el número de propiedades en una clase .NET?

¿Tienen algún impacto en el rendimiento en relación con los objetos de esta clase con tantas propiedades?

Gracias!

+44

Retroceda 3 pasos desde el teclado. Comience a correr No te detengas –

+21

@Russel: una cosa para agregar: hacer un 180 antes de comenzar a correr;) –

+0

Estoy seguro de que hay un límite. Pero supongo que es mucho más alto que 1000. – CodesInChaos

Respuesta

33

Los metadatos pueden tener referencias/definiciones de hasta 24 bits por conjunto. Al ser una propiedad, necesita 2 métodos por propiedad. Por lo tanto, el límite será de 23 bits o 1 << 23 - 1 para todo el conjunto.

Actualización:

Si ellos son de sólo lectura sólo propiedades, el límite sería 1 << 24 - 1.

respuesta a la segunda pregunta:

No, no habrá sobrecarga de rendimiento. Es probable que las propiedades simples estén delimitadas por el JIT.

Algunos pensamientos:

Usted nunca alcanzarán el límite superior. Imágenes con 16 millones de propiedades. Eso requerirá 16 millones de cadenas almacenadas para los nombres también. Digamos que el nombre promedio es de 8 caracteres, luego está buscando un tamaño de tabla de cadena de ~ 256MB (nombre de propiedad + nombre del método), y aún no ha comenzado a codificar todavía. Solo un pensamiento.

+0

¿La propiedad en sí misma no necesita una ranura de metadatos también? Que resultaría en algo así como 2^24/3 – CodesInChaos

+1

@CodeInChaos: Diferentes tablas :) – leppie

+7

Es bueno ver una respuesta que se basa en saber realmente la respuesta, en lugar de vaga "No creo que haya un límite, pero eso está seguro de los "malos" diseños. +1 – jalf

Cuestiones relacionadas