Seguro asumir todas las variables de C # inicializadas por nuevos aparecen referencias?

StackOverflow https://stackoverflow.com/questions/861555

  •  21-08-2019
  •  | 
  •  

Pregunta

Estoy aprendiendo sobre árbitros de C # en este momento.

¿Es seguro asumir que todas las variables que se asignan con un nuevo son las referencias y no valores?

Ejemplo:

SomeType variable = new SomeType()
¿Fue útil?

Solución

No:

  • Instancia de clases son referencias, pero las instancias de las estructuras son valores.
  • Clases y estructuras pueden ambos ser construidos usando nuevo

Por ejemplo, System.Drawing.Point es una struct no a class:

Point point = new Point(1, 1); //point is a value, not a reference

Otros consejos

C # tiene dos tipos de objetos -. Tipos de referencia (definidas con una clase de palabras clave) y Tipos de Valores (definida mediante una palabra clave struct)

Recoge un buen libro sobre C # para más detalles .. Su un concepto importante.

No, los tipos de valor no son referencias.

Pero con cualquier otro tipo no valuetype y el parámetro 'ref / out', que son referencias.

No. En C # estructuras también se instancian usando nuevo (), pero se tratan como valores.

Parece que se está confundiendo referencias con objetos. Si ese es el caso de que sí los tipos que se crean con la nueva palabra clave son objetos. Con la excepción de las estructuras que se tratan como valores.

No necesariamente. A medida que aprenda más sobre C # usted encuentra que tiene clases, que son tipos de referencia y estructuras, que son tipos de valor. Ambos son instanciados a través del uso de la 'nueva' palabra clave, pero los casos de estructuras no son referencias.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top