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 decimal
en 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).