Para un Type
, hay una propiedad IsClass
en C#, pero ¿cómo decidir un Type
es una estructura?¿Cómo decidir un Tipo es una estructura personalizada?
Aunque IsValueType
es una condición necesaria, obviamente no es suficiente. Para un int
también es un tipo de valor.
Alguien sugiere el siguiente código:
bool IsStruct = type.IsValueType && !type.IsEnum && !type.IsPrimitive;
Pero no estoy seguro de si se trata de un método exacto. La fórmula debería indicar la diferencia entre struct y otros tipos, como DateTime
, int
y array
s.
Como algunos amigos han señalado aquí, quiero decir estructura definida por el usuario y tipos no predefinidos, como DateTime
.
No estoy seguro de entender la pregunta. Un DateTime ** es ** una estructura. ¿Por qué devolverías falso allí? –
En realidad, int también es un tipo de estructura. La especificación del lenguaje indica que "C# proporciona un conjunto de tipos de estructura predefinidos denominados tipos simples". –
Sería interesante saber por qué te importa. ¿Qué estás haciendo? Puede haber una mejor manera de hacer lo que quieras. –