public void ValueTypesTest() { int edad = 10;// tipo por valor. Persona juan = new Persona();//tipo por referencia., las clases y objetos son tipos por referencia. Persona pedro = juan;//son la misma referencia, los valores que cambie un objeto o variable, los cambiara el otro. Persona pablo=new Persona(); Assert.AreEqual(0, pedro.Edad); juan.Sumar(edad, juan);//le cambia la edad a todo el objeto, porque es por referencia. juan.Sumar(edad, juan.Edad);//no le cambia la edad, porque le manda una copia de la edad de juan, que es por valor. Assert.AreEqual(10, pedro.Edad); Assert.AreEqual(10, juan.Edad); Assert.AreEqual(10, juan.Edad); Assert.AreEqual(0, pablo.Edad); Assert.AreEqual(pedro, juan); Assert.AreNotEqual(pablo, juan);//son referencias, pero referencias distintas. pedro.Edad = 20; Assert.AreEqual(20, juan.Edad); }