Format littéral C # short / long / int?

En C / C # / etc., vous pouvez dire au compilateur qu’un nombre littéral n’est pas ce qu’il semble être (ie, float au lieu de double , unsigned long au lieu de int :

 var d = 1.0; // double var f = 1.0f; // float var u = 1UL; // unsigned long 

etc.

Quelqu’un pourrait-il m’indiquer une liste de ceux-ci? Je recherche spécifiquement un suffixe short ou Int16 .

 var d = 1.0d; // double var d0 = 1.0; // double var d1 = 1e+3; // double var d2 = 1e-3; // double var f = 1.0f; // float var m = 1.0m; // decimal var i = 1; // int var ui = 1U; // uint var ul = 1UL; // ulong var l = 1L; // long 

Je pense que c’est tout … il n’y a pas de spécificateurs littéraux pour short / ushort / byte / sbyte

De §2.4.4.2 Entiers littéraux :

Le type d’un littéral entier est déterminé comme suit:

  • Si le littéral n’a pas de suffixe, il a le premier de ces types dans lequel sa valeur peut être représentée: int , uint , long , ulong .
  • Si le littéral est suffixé par U ou u , il a le premier de ces types dans lequel sa valeur peut être représentée: uint , ulong .
  • Si le littéral est suffixé par L ou l , il a le premier de ces types dans lequel sa valeur peut être représentée: long , ulong .
  • Si le littéral est suffixé par UL , Ul , uL , ul , LU , Lu , lU ou lu , il est de type ulong .

Et à partir du § 2.4.4.3 Littéraux réels :

Si aucun suffixe de type réel n’est spécifié, le type du littéral réel est double. Sinon, le suffixe de type réel détermine le type du littéral réel, comme suit:

  • Un vrai littéral suffixé par F ou f est de type float . Par exemple, les littéraux 1f , 1.5f , 1e10f et 123.456F sont tous de type float .
  • Un vrai littéral suffixé par D ou d est de type double . Par exemple, les littéraux 1d , 1.5d , 1e10d et 123.456D sont tous de type double .
  • Un littéral réel suffixé par M ou m est du type decimal . Par exemple, les littéraux 1m , 1.5m , 1e10m et 123.456M sont tous de type decimal . Ce littéral est converti en une valeur décimale en prenant la valeur exacte et, si nécessaire, en arrondissant à la valeur représentable la plus proche à l’aide de l’arrondi du banquier (section 4.1.7). Toute échelle apparente dans le littéral est conservée à moins que la valeur ne soit arrondie ou que la valeur ne soit nulle (dans ce dernier cas, le signe et l’échelle seront 0). Par conséquent, le littéral 2.900m sera analysé pour former la décimale avec le signe 0 , le coefficient 2900 et l’échelle 3 .

Si votre variable n’est pas déjà courte, vous devez la lancer explicitement:

 Object s = (Int16) 1; 

Il n’y en a pas un pour faire court. Utilisez simplement short s = 1; .

Si vous souhaitez éviter les short.Parse("1") type qui provoquent souvent des avertissements avec short.Parse("1") , short.Parse("1") peut également être une alternative.