2011-03-01 16 views
21

Habiendo estudiado switch documentation y descubriendo que solo puede activar tipos integrales Me puse a buscar una definición. No puedo encontrar uno en ninguna parte. Solo puedo find a list of integral types.¿Qué son exactamente los tipos integrales?

Podría suponer que los tipos integrales son los tipos que están integrados en el idioma, sin embargo, sería más feliz con una definición adecuada. ¿Alguien tiene uno?

+0

No todos los tipos que se integran en el lenguaje son integrales (System.Type, objeto ...). Básicamente, un tipo es integral si está en la lista de tipos integrales, una definición tautológica, pero no obstante verdadera. – SWeko

+0

@SWeko: en este contexto [integral] (http://wordnetweb.princeton.edu/perl/webwn?s=integral) significa "de o indicado por un número entero", no "incorporado". – configurator

+0

@configurator: sí, y eso es exactamente lo que estoy diciendo en el comentario. – SWeko

Respuesta

25

"Integral" se refiere a entero tipos (es decir, números enteros). En C# esto significa tipos como int, long, short, etc.

favor ver Integral Types Table (C# Reference):

La siguiente tabla muestra los tamaños y los rangos de los tipos integrales, que constituyen un subconjunto de tipos simples.

Editar: Tenga en cuenta que la declaración switch admite cadenas literales también.

+2

¿Puedes citar esta respuesta? –

+1

Entonces, ¿cómo puedo probar verdadero/falso en una declaración de cambio? No parece ser una cadena ni una integral, y no hay una conversión implícita para ella. –

+0

@ m.edmondson: No estoy seguro de entender el problema. ¿Estás tratando de probar si un tipo es integral en el momento de la ejecución? –

8

La documentación que está estudiando fue escrita en 2003 y no está actualizada para la última versión del lenguaje. Sugiero que deje de estudiar el archivo de la documentación de 2003 y lea la documentación de 2010 si está utilizando una versión más moderna de C#.

La referencia definitiva que responde a su pregunta es la especificación de C# sección 8.7.2, una parte de la cual reproduzco aquí para su conveniencia.


El tipo de gobierno de una sentencia switch se establece mediante el interruptor expresión.

• Si el tipo de la expresión interruptor está sbyte, byte, corta, ushort, int, uint larga, ulong, bool, char, cadena o un tipo de enumeración, o si es el de tipo anulable correspondiente a uno de estos tipos, , que es el tipo de gobierno de la declaración de interruptor .

• De lo contrario, exactamente una implícita conversión definida por el usuario debe existir con el tipo de la expresión switch a uno de las siguientes posibles de gobierno tipos: sbyte, byte, short, ushort, int, uint long, ulong, char, string, o, un tipo anulable correspondiente a uno de esos tipos.

• De lo contrario, si no existe tal conversión implícita, o si existe más de uno de tales implícita conversión, un tiempo de compilación se produce error.


Cuestiones relacionadas