En realidad, yo prefiero el segundo estilo que el método es un mutador, por lo tanto, no se espera un nuevo valor a devolver, en vez se espera que el valor real sea modificado. Sin embargo, es posible que necesite indicar que ModifyIt acepta una variable de referencia solo para indicar que la c real se modificará. c se pasa por valor, aunque es un tipo de referencia, todavía hay una diferencia entre pasar tipos de referencia por valor y pasar tipos de referencia por ref. Véase el siguiente:
public void ModifyIt(Myclass c) { c = new MyClass(); }
en el caso anterior la variable c se pasa por valor (es decir, una copia de la referencia será pasado y modificado para apuntar a un objeto recién instanitiated, que a su vez significa que se tendrá dos objetos de MiClase tipo, en este caso He aquí un ejemplo para ilustrar:.
Myclass s = new MyClass() { prop = "value" }; ModifyIt(s); Console.WriteLine(s.prob); // this will print "value"
aunque MOdifyIT instanitaited la referenct a un nuevo objeto que debe significar que prob se inicializará a cero, lo que realmente dejase' t instanciar s, instancia una copia de s. a diferencia de la ca se si s pasó por ref.
Espero que esto ayude!
¿Por qué está pasando la 'Clase x' como parámetro a ModifyIt()? ¿Su método no solo tomará la instancia de Clase como 'esto'? Dado el código que tiene, todas las otras respuestas con respecto al encadenamiento no funcionarán realmente. Para mí, la pregunta sería si su clase tiene más valor, en cuyo caso no debe modificar sus instancias, sino que debe devolver una nueva con el resultado de la operación. – van