Tipos de valor (Referencia de C#)
Los tipos de valor consisten en dos categorías principales:
Los structs se dividen en las siguientes categorías:
Tipos numéricos
Structs definidos por el usuario.
Características principales de los tipos de valor
Variables que están basadas directamente en tipos de valor que contienen valores. La asignación de una variable de tipo de valor a otra copia el valor contenido. Esto es diferente de la asignación de variables de tipo de referencia, que copia una referencia en el objeto pero no el propio objeto.
Todos los tipos de valor se derivan implícitamente de la clase ValueType.
A diferencia de los tipos de referencia, no es posible derivar un nuevo tipo de un tipo de valor. No obstante, al igual que los tipos de referencia, los structs pueden implementar interfaces.
A diferencia de los tipos de referencia, los tipos de valor no pueden contener el valor null. Sin embargo, la característica tipos que aceptan valores NULL permite que los tipos de valor se asignarán a null.
Cada tipo de valor tiene un constructor implícito predeterminado que inicializa el valor predeterminado de ese tipo. Para obtener información acerca de los valores predeterminados de los tipos de valor, consulte Tabla de valores predeterminados.
Características principales de los tipos simples
Todos los tipos simples (aquellos que forman parte integral del lenguaje C#) son alias de los tipos del sistema .NET Framework. Por ejemplo, int es un alias de Int32. Para una lista completa de alias, vea Tabla de tipos integrados (Referencia de C#).
Las expresiones constantes, cuyos operandos son todos constantes de tipos simples, se evalúan en tiempo de compilación.
Los tipos simples se pueden inicializar mediante literales. Por ejemplo, 'A' es un literal del tipo char y 2001 es un literal del tipo int.
Inicializar tipos de valor
Las variables locales de C# deben inicializarse para poder utilizarse. Por ejemplo, podría declarar una variable local sin inicialización, como en el ejemplo siguiente:
int myInt;
No se podrá utilizar hasta que se inicialice. La inicialización se puede realizar mediante la siguiente instrucción:
myInt = new int(); // Invoke default constructor for int type.
Esta instrucción es equivalente a la siguiente instrucción:
myInt = 0; // Assign an initial value, 0 in this example.
También se puede realizar la declaración y la inicialización en la misma instrucción, tal y como se muestra en los siguientes ejemplos:
int myInt = new int();
O bien
int myInt = 0;
Con el operador new, se realiza una llamada al constructor predeterminado del tipo específico y se asigna el valor predeterminado a la variable. En el ejemplo anterior, el constructor predeterminado asigna a myInt el valor 0. Para obtener más información acerca de los valores asignados mediante constructores predeterminados, consulte Tabla de valores predeterminados.
Con los tipos definidos por el usuario, se utiliza new para invocar el constructor predeterminado. Por ejemplo, la siguiente instrucción invoca el constructor predeterminado del struct Point:
Point p = new Point(); // Invoke default constructor for the struct.
Después de esta llamada, el struct se considera definitivamente asignada; es decir, todos sus miembros se inicializan con sus valores predeterminados.
Para obtener más información acerca del operador new, consulte new.
Para obtener información acerca de cómo dar formato a la presentación de tipos numéricos, consulte Tabla de formatos de presentación para valores numéricos.
Vea también
Referencia
Tipos de referencia (Referencia de C#)