Seguro asumir todas las variables de C # inicializadas por nuevos aparecen referencias?
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()
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)
- RTs se crean en el montón administrado. Cuando se hace una nueva () en un RT, a volver una referencia a un objeto en el montón. Dos variables RT pueden apuntar al mismo objeto.
- TT se creó en la pila (a menos que sean un campo dentro de un tipo de referencia). Cuando se hace una nueva () en un VT, se obtiene una variable que apunta al principio del objeto en la pila. Dos variables de tipo de valor no pueden apuntar al mismo objeto - que son siempre dos objetos distintos en la pila. Sin embargo, esto es una detalle de implementación que lo importante para recordar es que los TT tienen una semántica de tipo valor.
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.