una parametros objetos libro estructuras estructura ejemplos declaracion datos con clases clase c# struct new-operator value-type

parametros - estructura de una clase en c#



Si una estructura es un tipo de valor, ¿por qué puedo renovarla? (5)

Dice que aquí mismo, en el documento de MSDN, el new operador se usa para invocar al constructor predeterminado de un tipo de valor.

Esta pregunta ya tiene una respuesta aquí:

En C #, las estructuras son tipos de valor, pero puedo renovarlos como si fueran tipos de referencia. ¿Por qué es esto?


No tienes que usar el nuevo operador para crear una estructura. Si lo hace, llamará a su constructor, si no lo hace, todos los campos permanecerán sin asignar.


Porque tienen constructores.

El new operador no significa "este es un tipo de referencia"; significa "este tipo tiene un constructor". Cuando creas una new instancia, creas una instancia y, al hacerlo, invocas un constructor.

En este sentido, todos los tipos de valor y referencia tienen constructores (al menos un constructor predeterminado que no presenta argumentos si el tipo en sí no define ninguno).


Usted puede "nuevo" un entero también.
La diferencia es que puede pasar una clase de referencia por valor.


new operador no significa que se pueda usar solo para tipos de referencia . Se puede utilizar con tipos de valor también.

De nuevo operador

Se utiliza para crear objetos e invocar constructores .

Dado que cada tipo de valor tiene implícitamente un constructor público predeterminado, todos los tipos de valor tienen valores predeterminados. Puedes leer la tabla de valores por defecto .

Por ejemplo;

int i = new int(); // i will be 0 for because its default values.

Valor por defecto para el tipo de estructura;

El valor producido al establecer todos los campos de tipo de valor en sus valores predeterminados y todos los campos de tipo de referencia en nulo .

También desde MSDN :

Cuando crea un objeto de estructura utilizando el nuevo operador, se crea y se llama al constructor apropiado . A diferencia de las clases, las estructuras se pueden crear instancias sin usar el nuevo operador. Si no usa nuevo, los campos permanecerán sin asignar y el objeto no podrá usarse hasta que todos los campos estén inicializados.