English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tipos de datos de C#

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.

Tipos de datos predefinidos en C#

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.

TipoTipos 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
byte8 punto flotante con signo en bitspunto flotante sin signo en bits 255
sbyte8 sufijo-128 a 127
short16 sufijo-32,768 a 32,767
ushort 16 punto flotante con signo en bitspunto flotante sin signo en bits 65,535
int32 sufijo-2,147,483,648

a

2,147,483,647


uint32 punto flotante con signo en bitspunto flotante sin signo en bits 4,294,967,295rango
long64 sufijo-9,223,3720 a36,854,775,808
a
9,223,3720 a36,854,775,807
punto flotante sin signo
ulong64 punto flotante con signo en bitspunto flotante sin signo en bits 18,446,7440 a73,709,551,615,0
float32 ul-3.402823e38 a 3.402823e38punto flotante de precisión simple en bits
double64 punto flotante de precisión doble en bits-1.79769313486232e308 a 1.79769313486232e308d
decimal128 valor decimal preciso en bits28-29 número de dígitos válidos(+ o-)1.0 x 10e-28  a 7.9 x 10e28m
char16 carácter Unicode en bitscualquier carácter válido, por ejemplo a,*, \x0058 (hex), o\u0058 (Unicode)
bool8 lógico true en bits/valor falseTrue o False
objectclase base de todos los tipos

string

secuencia de caracteres Unicode



DateTimerepresenta la fecha y la hora0: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;

Sinónimo y tipo .NET

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.

AliasTipos .NETTipo
byteSystem.Bytestruct
sbyteSystem.SBytestruct
intSystem.Int32struct
uintSystem.UInt32struct
shortSystem.Int16struct
ushortSystem.UInt16struct
longSystem.Int64struct
ulongSystem.UInt64struct
floatSystem.Singlestruct
doubleSystem.Doublestruct
charSystem.Charstruct
boolSystem.Booleanstruct
objectSystem.ObjectClass
stringSystem.StringClass
decimalSystem.Decimalstruct
DateTimeSystem.DateTimestruct

Esto significa que, independientemente de si define int o Int32Las variables son las mismas.

int i = 345;
Int32 i = 345;// Como se muestra anteriormente

Conversión de tipos

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ícitahasta
sbyteshort, int, long, float, double decimal
byteshort, ushort, int, uint, long, ulong, float, double, decimal
shortint, long, float, double o decimal
ushortint, uint, long, ulong, float, double o decimal
intlong, float, double o decimal.
uintlong, ulong, float, double o decimal
longfloat, double o decimal
ulongfloat, double o decimal
charushort, int, uint, long, ulong, float, double o decimal
floatDouble

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.