[.NET] Qué es un Value Type y cómo se usa.


¿Qué es un Value Type?

Básicamente un Value Type es aquel cuya variable almacena directamente sus datos en una zona de memoria denominada Stack, en la que el motor en tiempo de ejecución puede crear, leer, actualizar o eliminar datos de una forma muy rápida. En C# los tipos básicos de datos tales como int o bool son value types, esto quiere decir que si se declara una variable int y se asigna el valor a otra variable int, se tendrán dos copias separadas de los valores, esto es, el contenido de una variable se copia en la otra por lo que si se modifica el valor de la primera variable, en la segunda su valor no cambia. Estos tipos se implementan como estructuras (struct).

Existen tres tipos de value types:

  • Value types predefinidos en .NET Framework.
  • Value types definidos por el usuario.
  • Enumeraciones.

Value types predefinidos en .NET Framework.

Son tipos base que vienen incluidos en el .NET Framework y con los cuales se pueden construir otros tipos.

Estos value type se pueden agrupar en las siguientes categorías:

Integral types

Representan datos de tipo entero. Los tipos base con su alias C# y rangos permitidos son los siguientes:

System.Sbyte(sbyte) 8-bit -127 a 128
System.Int16(short) 16-bit -32768 a 32767
System.Int32(int) 32-bit -2147483648 a 2147483647
System.Int64(long) 64-bit -9.223372036854775808 a 9223372036854775807
System.Byte(byte) 8-bit 0 a 255
System.UInt16(ushort) 16-bit 0 a 65535
System.UInt32(uint) 32-bit 0 a 4294967295
System.UInt64(ulong) 64-bit 0 a 18446744073709551615

Floating-point types

Representan datos de coma flotante o números reales. El tipo float posee una precisión de 7 dígitos mientras que double posee 15 dígitos significativos. Los tipos base con su alias C# y rangos permitidos son los siguientes:

System.Single(float) 32-bit -3.402823E+38 a 3.402823E+38
System.Double(double) 64-bit -1.79769313486232E+308 a 1.79769313486232E+308

Decimal type

Representan datos de coma flotante pero con una precisión mucho mayor. Este tipo se usa básicamente para cálculos financieros. Los tipos base con su alias C# y rangos permitidos son los siguientes:

System.Decimal(decimal) 128-bit -79228162514264337593543950335 a 79228162514264337593543950335

Otros tipos

Representan caracteres Unicode, o fechas, o valores lógicos de verdadero o falso.

System.Char(char) 16-bit Cualquier carácter Unicode
System.Boolean(bool) 8-bit true/false
System.DateTime(date) 64-bit 01/01/0001 12:00:00 AM a 31/12/9999 11:59:59 PM

Value types definidos por el usuario.

Los value type definidos por el usuario también se llaman estructuras (struct). Las estructuras se componen de otros tipos para facilitar el trabajo con los datos relacionados con dichos otros tipos.

El ejemplo de tipo definido por el usuario más simples es el de System.Drawing.Point que contiene dos enteros X e Y.

Enumeraciones.

Son tipos enteros definidos por el usuario y son símbolos que tienen valores fijos y están relacionados. Las enumeraciones se suelen usar como una lista de valores aceptables.

¿Cómo usamos un Value Type?

  • Para instanciar un value type predifinido del .NET Framework haremos lo siguiente por ejemplo:
decimal price = 100.50;
public bool isBroken = false;
  • Para definir un struct emplearemos esta sintaxis:
public struct Coords
{
    public int x, y;
    public Coords(int p1, int p2)
    {
       x = p1;
       y = p2;
    }
}
// instanciamos
Coords coords1 = new Coords();
Coords coords2 = new Coords(10, 10);
  • Para definir una enum emplearemos esta sintaxis:
enum Days { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };
// instanciamos
Days monday = Days.Monday;

Bueno con esto ya hemos aprendido qué son los value type y cómo se usan.
Dejo un enlace de lo que es nuestra biblia (la MSDN) con estos conceptos.

Value Types (C# Reference)

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s