c# - una - leer cadena de caracteres en c
¿Cómo funcionan las cadenas cuando se está copiando algo en C#? (3)
Las cadenas se consideran tipos de referencia pero pueden actuar como valores. Cuando se trata de copiar poco a poco algo manualmente o con el MemberwiseClone (), ¿cómo se manejan las cadenas? ¿Se los considera separados y aislados de la copia y el maestro?
Considera esto:
public class Person
{
string name;
// Other stuff
}
Si llama a MemberwiseClone, terminará con dos instancias separadas de Person, pero sus variables de name
, aunque sean distintas, tendrán el mismo valor: se referirán a la misma instancia de cadena. Esto se debe a que es un clon superficial.
Si cambia el nombre en una de esas instancias, eso no afectará al otro, porque las dos variables en sí mismas están separadas; solo está cambiando el valor de una de ellas para referirse a una cadena diferente.
Las cadenas son tipos de referencia. Sin embargo, son inmutables (no se pueden cambiar), por lo que no importaría si se copiaran por valor o se copiaran por referencia.
Si se copian superficialmente, la referencia se copiará ... pero no puede cambiarlos para que no pueda afectar a dos objetos a la vez.
Usted solo está copiando una referencia (piense en "puntero"); las dos referencias están separadas (pero tienen el mismo valor), pero solo hay un único objeto de cadena.