¿Ellos? ¿O para acelerar mi programa debo pasarlos por referencia?
¿Ellos? ¿O para acelerar mi programa debo pasarlos por referencia?
Respuestas:
La referencia se pasa por valor .
Las matrices en .NET son objetos en el montón, por lo que tiene una referencia. Esa referencia se pasa por valor, lo que significa que la persona que llama verá los cambios en el contenido de la matriz, pero la reasignación de la matriz no:
void Foo(int[] data) {
data[0] = 1; // caller sees this
}
void Bar(int[] data) {
data = new int[20]; // but not this
}
Si agrega el ref
modificador, la referencia se pasa por referencia , y la persona que llama verá cualquiera de los cambios anteriores.
Sí, se pasan por referencia de forma predeterminada en C #. Todos los objetos en C # lo son, excepto los tipos de valor. Para ser un poco más precisos, se pasan "por referencia por valor"; es decir, el valor de la variable que ve en sus métodos es una referencia al objeto original pasado. Este es un pequeño punto semántico, pero a veces puede ser importante.