programacion - ¿Cómo se hacen los tipos de datos primitivos en C#?
tipos de variables en lenguaje c (2)
¿Cómo funcionan
System.float
,
System.int
y otros tipos primitivos?
Nunca entendí cómo era posible hacer estructuras primitivas y me pregunto si podría hacer mi propio tipo numérico.
Los tipos primitivos como
int
y
float
son compatibles directamente con el procesador, y la plataforma .net y los idiomas tienen un soporte incorporado similar para ellos.
Por lo tanto, no hay forma de que pueda crear sus propias primitivas a nivel de lenguaje.
Suponiendo que estamos hablando de un compilador de C # que se dirige a la Infraestructura de lenguaje común (CLI), como casi todo lo hace, básicamente utiliza los tipos primitivos expuestos por la CLI.
Hay tres niveles de apoyo a tener en cuenta:
- Primitivas genuinas, con su propia representación e instrucciones en IL
-
Tipos numéricos de los que el compilador de C # tiene un conocimiento especial, pero que no forman parte de la CLI, básicamente,
System.Decimal. Esto también es parte del Sistema de tipo común (CTS), lo que significa que si crea unconst decimalen C #, aún puede consumirlo en VB, por ejemplo. Pero todavía no hay soporte directo de IL . -
Otros tipos numéricos, como
BigInteger: puede escribir los suyos propios.
El término medio de la segunda viñeta permite que C # tenga literales decimales y constantes decimales, ninguno de los cuales es posible para la tercera viñeta.
Por ejemplo,
BigInteger
no tiene soporte de idiomas, por lo que no puede escribir:
// This isn''t valid
BigInteger bigInteger = 123456789012345678901234567890;
Tendría que analizar una representación de cadena en su lugar.
Del mismo modo, no puede tener un
const BigInteger
.
(En teoría, sería posible tener un tipo con soporte en C # pero no en el CTS. No conozco ninguno de esos tipos).