2008-11-09 7 views

Respuesta

10

Siempre y cuando no tenga un hilo diferente, sí, la muestra del código es válida. Un cuadro de texto (u otros elementos de formularios de Windows) todavía son objetos que pueden pasarse y manipularse por métodos.

+0

Gracias por la aclaración y su rápida respuesta. –

8

Sí, eso funcionará. En realidad, no está pasando un objeto: está pasando una referencia al objeto.

Consulte "Parameter passing in C#" para obtener más información sobre pass-by-ref vs pass-by-value.

+0

Gracias por corregir mi comprensión sobre el uso de los términos. Su respuesta y "referencias de información" también son muy apreciadas. –

+0

vínculo a "Parámetro que pasa en C#" ya no es válido. –

+0

@ CarolinaJay65: corregido ahora. Por alguna razón pobox.com había perdido mi reenvío de URL ... –

4

Para cualquier tipo de referencia, está bien: ha pasado la referencia al objeto, pero solo hay un objeto, por lo que la persona que llama puede ver los cambios.

El horario principal en el que no se trabajará es para "estructuras" (tipos de valor), pero en realidad no deberían ser mutables (es decir, no deberían tener realmente propiedades editables).

Si necesita hacer esto con una estructura, se podría añadir "ref" - es decir,

public void MyFunction(ref MyMutableStruct whatever) 
{ 
    whatever.Value = "Hi."; // but avoid mutable structs in the first place! 
} 
+0

¿Por qué las estructuras no deberían ser mutables? ¿No son solo una versión más liviana de las clases? – DOK

+0

@DOK: No, son completamente diferentes. Se comportan de manera muy diferente, y si haces estructuras mutables, * tendrás * problemas. Solo di no. –

+0

Las estructuras se tratan como tipos de valores, no como referencias de objetos. Pasar una estructura es como pasar un int, cualquier cambio que realice en el entero no abandonará el método. – Greg

Cuestiones relacionadas