C # - Tipos de datos

Las variables en C # se clasifican en los siguientes tipos:

  • Tipos de valor
  • Tipos de referencia
  • Tipos de puntero

Tipo de valor

A las variables de tipo de valor se les puede asignar un valor directamente. Se derivan de la clase System.ValueType.

Los tipos de valor contienen datos directamente. Algunos ejemplos sonint, char, and float, que almacena números, alfabetos y números de coma flotante, respectivamente. Cuando declaras unint tipo, el sistema asigna memoria para almacenar el valor.

La siguiente tabla enumera los tipos de valores disponibles en C # 2010:

Tipo Representa Rango Valor por defecto
bool Valor booleano Verdadero o falso Falso
byte Entero sin signo de 8 bits 0 hasta 255 0
carbonizarse Carácter Unicode de 16 bits U +0000 a U + ffff '\ 0'
decimal Valores decimales precisos de 128 bits con 28-29 dígitos significativos (-7,9 x 10 28 a 7,9 x 10 28 ) / 10 0 a 28 0,0 M
doble Tipo de coma flotante de doble precisión de 64 bits (+/-) 5,0 x 10-324 a (+/-) 1,7 x 10 308 0.0D
flotador Tipo de coma flotante de precisión simple de 32 bits -3,4 x 10 38 hasta + 3,4 x 10 38 0.0F
En t Tipo entero de 32 bits con signo -2,147,483,648 a 2,147,483,647 0
largo Tipo entero de 64 bits con signo -9,223,372,036,854,775,808 a 9,223,372,036,854,775,807 0L
sbyte Tipo entero con signo de 8 bits -128 hasta 127 0
corto Tipo entero con signo de 16 bits -32.768 hasta 32.767 0
uint Tipo entero sin signo de 32 bits 0 a 4.294.967.295 0
ulong Tipo entero sin signo de 64 bits 0 a 18,446,744,073,709,551,615 0
corto Tipo entero sin signo de 16 bits 0 hasta 65.535 0

Para obtener el tamaño exacto de un tipo o variable en una plataforma en particular, puede usar el sizeofmétodo. La expresión sizeof (tipo) produce el tamaño de almacenamiento del objeto o tipo en bytes. A continuación se muestra un ejemplo para obtener el tamaño del tipo int en cualquier máquina:

using System;

namespace DataTypeApplication {
   class Program {
      static void Main(string[] args) {
         Console.WriteLine("Size of int: {0}", sizeof(int));
         Console.ReadLine();
      }
   }
}

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

Size of int: 4

Tipo de referencia

Los tipos de referencia no contienen los datos reales almacenados en una variable, pero contienen una referencia a las variables.

En otras palabras, se refieren a una ubicación de memoria. Usando múltiples variables, los tipos de referencia pueden referirse a una ubicación de memoria. Si una de las variables cambia los datos de la ubicación de la memoria, la otra variable refleja automáticamente este cambio de valor. Ejemplo debuilt-in los tipos de referencia son: object, dynamic, y string.

Tipo de objeto

los Object Typees la clase base definitiva para todos los tipos de datos en C # Common Type System (CTS). Object es un alias de la clase System.Object. A los tipos de objeto se les pueden asignar valores de cualquier otro tipo, tipo de valor, tipo de referencia, tipo predefinido o definido por el usuario. Sin embargo, antes de asignar valores, necesita conversión de tipo.

Cuando un tipo de valor se convierte en tipo de objeto, se llama boxing y por otro lado, cuando un tipo de objeto se convierte en un tipo de valor, se llama unboxing.

object obj;
obj = 100; // this is boxing

Tipo dinámico

Puede almacenar cualquier tipo de valor en la variable de tipo de datos dinámicos. La verificación de tipos para estos tipos de variables se realiza en tiempo de ejecución.

La sintaxis para declarar un tipo dinámico es:

dynamic <variable_name> = value;

Por ejemplo,

dynamic d = 20;

Los tipos dinámicos son similares a los tipos de objeto, excepto que la verificación de tipos para las variables de tipo de objeto se lleva a cabo en tiempo de compilación, mientras que la de las variables de tipo dinámico tiene lugar en tiempo de ejecución.

Tipo de cadena

los String Typele permite asignar cualquier valor de cadena a una variable. El tipo de cadena es un alias de la clase System.String. Se deriva del tipo de objeto. El valor de un tipo de cadena se puede asignar utilizando literales de cadena en dos formas: entre comillas y @quoted.

Por ejemplo,

String str = "Tutorials Point";

Un literal de cadena @quoted tiene el siguiente aspecto:

@"Tutorials Point";

Los tipos de referencia definidos por el usuario son: clase, interfaz o delegado. Discutiremos estos tipos en un capítulo posterior.

Tipo de puntero

Las variables de tipo puntero almacenan la dirección de memoria de otro tipo. Los punteros en C # tienen las mismas capacidades que los punteros en C o C ++.

La sintaxis para declarar un tipo de puntero es -

type* identifier;

Por ejemplo,

char* cptr;
int* iptr;

Discutiremos los tipos de punteros en el capítulo 'Códigos inseguros'.