Comment System.float
, System.int
et d'autres types de primitives fonctionnent? Je n'ai jamais compris comment il était possible de faire des structures primitives et je me demande si je pourrais faire mon propre type numérique.
En supposant que nous parlons d'un compilateur C # qui cible la Common Language Infrastructure (CLI), comme presque tout, il utilise essentiellement les types primitifs exposés par la CLI.
Il existe effectivement trois niveaux de soutien à considérer:
System.Decimal
. C'est également une partie du système de type commun (CTS), ce qui signifie que si vous créez un const decimal
en C #, vous pouvez toujours le consommer en VB, par exemple. Mais il n'y a toujours pas de support direct [~ # ~] il [~ # ~] .BigInteger
- vous pouvez en écrire vos propres.Le milieu de la deuxième puce permet à C # d'avoir des littéraux décimaux et des constantes décimales, qui ne sont pas possibles pour la troisième puce. Par exemple, BigInteger
ne prend pas en charge la langue, vous ne pouvez donc pas écrire:
// This isn't valid
BigInteger bigInteger = 123456789012345678901234567890;
Vous devez plutôt analyser une représentation sous forme de chaîne. De même, vous ne pouvez pas avoir un const BigInteger
.
(En théorie, il serait possible d'avoir un type avec support en C # mais pas dans le CTS. Je ne connais aucun de ces types.)
Les types primitifs tels que int
et float
sont directement pris en charge par le processeur, et la plate-forme .net et les langues ont une prise en charge intégrée similaire pour eux. Il n'y a donc aucun moyen de créer vos propres primitives au niveau de la langue.