English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C# es un lenguaje de tipo fuerte. Esto significa que debemos declarar el tipo de variable, que indica el tipo de valor que se almacenará, por ejemplo, entero, flotante, decimal, texto, etc.
A continuación, se declaran e inician variables de diferentes tipos de datos.
string stringVar = "Hello World!!"; int intVar = 100; float floatVar = 10.2f; char charVar = 'A'; bool boolVar = true;
C# principalmente divide los tipos de datos en dos: tipos de valor y tipos de referencia. Los tipos de valor incluyen tipos simples (por ejemplo, int, float, bool y char), tipos de enumeración, tipos de estructura y tipos de valor Nullable. Los tipos de referencia incluyen tipos de clase, tipos de interfaz, tipos de delegado y tipos de matriz. Se explicarán en detalle los tipos de valor y de referencia en el siguiente capítulo.
C# principalmente divide los tipos de datos en dos: tipos de valor y tipos de referencia. Los tipos de valor incluyen tipos simples (por ejemplo, int, float, bool y char), tipos de enumeración, tipos de estructura y tipos de valor Nullable. Los tipos de referencia incluyen tipos de clase, tipos de interfaz, tipos de delegado y tipos de matriz. Se explicarán en detalle los tipos de valor y de referencia en el siguiente capítulo.
Tipo | Tipos de datos predefinidos en C# | C# incluye algunos tipos de datos predefinidos de valor y de referencia. La siguiente tabla enumera los tipos de datos predefinidos: | descripción |
---|---|---|---|
byte | 8 punto flotante con signo en bits | punto flotante sin signo en bits 255 | |
sbyte | 8 sufijo | -128 a 127 | |
short | 16 sufijo | -32,768 a 32,767 | |
ushort | 16 punto flotante con signo en bits | punto flotante sin signo en bits 65,535 | |
int | 32 sufijo | -2,147,483,648 a 2,147,483,647 | |
uint | 32 punto flotante con signo en bits | punto flotante sin signo en bits 4,294,967,295 | rango |
long | 64 sufijo | -9,223,3720 a36,854,775,808 a 9,223,3720 a36,854,775,807 | punto flotante sin signo |
ulong | 64 punto flotante con signo en bits | punto flotante sin signo en bits 18,446,7440 a73,709,551,615 | ,0 |
float | 32 ul | -3.402823e38 a 3.402823e38 | punto flotante de precisión simple en bits |
double | 64 punto flotante de precisión doble en bits | -1.79769313486232e308 a 1.79769313486232e308 | d |
decimal | 128 valor decimal preciso en bits28-29 número de dígitos válidos | (+ o-)1.0 x 10e-28 a 7.9 x 10e28 | m |
char | 16 carácter Unicode en bits | cualquier carácter válido, por ejemplo a,*, \x0058 (hex), o\u0058 (Unicode) | |
bool | 8 lógico true en bits/valor false | True o False | |
object | clase base de todos los tipos | ||
string | secuencia de caracteres Unicode | ||
DateTime | representa la fecha y la hora | 0:00:00am 1/1/01 a 11:59:59pm 12/31/9999 |
Como se muestra en la tabla anterior, cada tipo de datos (excepto las cadenas y los objetos) contiene un rango de valores. Si el valor está fuera del rango permitido del tipo de datos, el compilador generará un error. Por ejemplo, el rango del tipo de datos int es-2,147,483,648a2,147,483,647. Por lo tanto, si el valor asignado no está en este rango, el compilador generará un error.
Ejemplo: error en tiempo de compilación
// Error en tiempo de compilación: no se puede convertir implícitamente el tipo 'long' a 'int'. int i = 21474836470;
Los valores de tipos de datos sin signo, long, float, double y decimal deben tener los sufijos u, l, f, d y m respectivamente.
uint ui = 100u; float fl = 10.2f; long l = 45755452222222l; ulong ul = 45755452222222ul; double d = 11452222.555d; decimal mon = 1000.15m;
Los tipos de datos predefinidos son sinónimos de los nombres de los tipos .NET (clases CLR). La siguiente tabla enumera los sinónimos de los tipos de datos predefinidos y los nombres de las clases .NET relacionadas.
Alias | Tipos .NET | Tipo |
---|---|---|
byte | System.Byte | struct |
sbyte | System.SByte | struct |
int | System.Int32 | struct |
uint | System.UInt32 | struct |
short | System.Int16 | struct |
ushort | System.UInt16 | struct |
long | System.Int64 | struct |
ulong | System.UInt64 | struct |
float | System.Single | struct |
double | System.Double | struct |
char | System.Char | struct |
bool | System.Boolean | struct |
object | System.Object | Class |
string | System.String | Class |
decimal | System.Decimal | struct |
DateTime | System.DateTime | struct |
Esto significa que, independientemente de si define int o Int32Las variables son las mismas.
int i = 345; Int32 i = 345;// Como se muestra anteriormente
El valor de ciertos tipos de datos se convierte automáticamente a diferentes tipos de datos en C#. Esto se llama conversión implícita.
int i = 345; float f = i; Console.WriteLine(f); //Salida:345
En el ejemplo anterior, el valor de la variable entera i se asigna a la variable de tipo float f, porque esta operación de conversión está predeterminada en C#.
A continuación se muestra la tabla de conversión de tipos de datos implícitos.
conversión implícita | hasta |
---|---|
sbyte | short, int, long, float, double decimal |
byte | short, ushort, int, uint, long, ulong, float, double, decimal |
short | int, long, float, double o decimal |
ushort | int, uint, long, ulong, float, double o decimal |
int | long, float, double o decimal. |
uint | long, ulong, float, double o decimal |
long | float, double o decimal |
ulong | float, double o decimal |
char | ushort, int, uint, long, ulong, float, double o decimal |
float | Double |
La conversión de int, uint, long o ulong a float y de long o ulong a double puede causar pérdida de precisión. No hay conversión implícita de tipos de datos a char.
Pero no todos los tipos de datos se convierten implícitamente a otros tipos de datos. Por ejemplo, el tipo int no se puede convertir implícitamente a uint. Debe especificarse explícitamente, como se muestra a continuación.
public static void Main() { int i = 100; uint u = (uint) i; Console.Write(i); }
En el ejemplo anterior, el entero i se convierte explícitamente a uint en los corchetes (uint). Esto convertirá el entero en uint.