Podría explicar el siguiente comportamiento de C# Class. Espero classResult como "Class Lijo"; pero el valor real es "Cambiado".lPass por valor & Pase por referencia
Estamos haciendo una copia de la referencia. Aunque la copia apunta a la misma dirección, el método que recibe el argumento no puede cambiar el original.
¿Por qué cambia el valor?
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
String nameString = "string Lijo";
Person p = new Person();
p.Name = "Class Lijo";
Utilityclass.TestMethod(nameString, p);
string classResult = p.Name;
Response.Write(nameString + "....." + classResult);
}
}
public class Utilityclass
{
public static void TestMethod(String nameString, Person k)
{
nameString = "Changed";
k.Name = "Changed";
}
}
public class Person
{
public string Name
{
get; set;
}
}
actualización: Cuando pasa una cadena, que no consigue realmente cambió.
Podría sugerir tener una lectura del [excelente artículo del señor Skeet sobre el tema] (http://www.yoda.arachsys.com/csharp/parameters.html). – Alconja
Aunque String es un objeto, es inmutable, por lo que cuando se pasa una cadena, la referencia original no se modifica – trendl
He leído este [artículo] (http://zuta-developer.blogspot.com/2012/06/net- parameter-passing.html) Este artículo le mostrará cómo se maneja el paso de parámetros en la memoria. – Developex