C # corto / largo / int formato literal?

En C / C # / etc. puede decirle al comstackdor que un número literal no es lo que parece ser (es decir, float lugar de double , unsigned long lugar de int :

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

etc.

¿Podría alguien señalarme una lista de estos? Estoy buscando específicamente un sufijo para short o 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 

Creo que eso es todo … no hay especificadores literales para short / ushort / byte / sbyte

De §2.4.4.2 literales enteros :

El tipo de un literal entero se determina de la siguiente manera:

  • Si el literal no tiene sufijo, tiene el primero de estos tipos en que se puede representar su valor: int , uint , long , ulong .
  • Si el literal tiene el sufijo U o u , tiene el primero de estos tipos en que se puede representar su valor: uint , ulong .
  • Si el literal tiene el sufijo L o l , tiene el primero de estos tipos en que se puede representar su valor: long , ulong .
  • Si el literal tiene el sufijo UL , UL , UL , UL , LU , LU , LU o LU , es de tipo ulong .

Y a partir de §2.4.4.3 literales reales :

Si no se especifica un sufijo de tipo real, el tipo del literal real es el doble. De lo contrario, el sufijo de tipo real determina el tipo del literal real, de la siguiente manera:

  • Un literal real con el sufijo F o f es de tipo float . Por ejemplo, los literales 1f , 1.5f , 1e10f y 123.456F son todos de tipo float .
  • Un literal real con sufijo D o d es del tipo double . Por ejemplo, los literales 1d , 1.5d , 1e10d y 123.456D son todos del tipo double .
  • Un literal real con sufijo M o m es de tipo decimal . Por ejemplo, los literales 1m , 1.5m , 1e10m y 123.456M son todos de tipo decimal . Este literal se convierte a un valor decimal tomando el valor exacto y, si es necesario, redondeando al valor representable más cercano utilizando el redondeo bancario (Sección 4.1.7). Cualquier escala aparente en el literal se conserva a menos que el valor sea redondeado o el valor sea cero (en este último caso, el signo y la escala serán 0). Por lo tanto, los 2.900m literales se analizarán para formar el decimal con el signo 0 , el coeficiente 2900 y la escala 3 .

Si su variable aún no es corta, debe convertirla explícitamente:

 Object s = (Int16) 1; 

No hay uno para abreviar. Solo use short s = 1; .

Si desea evitar los moldes de tipo que a menudo causan advertencias con short.Parse("1") , short.Parse("1") también puede ser una alternativa.