TOC

This article has been localized into Spanish by the community.

Los pasos básicos:

Parámetros de función

Parámetros de Funciones

La primera cosa que debemos tomar en cuenta, son los modificadores out y ref. En C#, así como en otros lenguajes, existen dos formas diferentes de pasar argumentos: "por valor" y "por referencia". Por defecto, en C# es "por valor". Lo cual básicamente significa que cuando pasas una variable en la llamada de una función, estás enviando en realidad una copia del objeto, en lugar de una referencia a éste. Esto también significa que puedes modificar la variable dentro de la función llamada, sin afectar al valor original del objeto que pasaste como argumento.

Con las palabras claves ref y out, podemos cambiar este comportamiento, así pasamos una referencia del objeto en lugar de solo una copia.

El modificador ref

Piensa en el siguiente ejemplo:

static void Main(string[] args)
{
    int number = 20;
    AddFive(number);
    Console.WriteLine(number);
    Console.ReadKey();
}

static void AddFive(int number)
{
    number = number + 5;
}

Creamos una variable Integer, asignamos el número 20 a la variable y la usamos en el método AddFive(), el cual suma 5 al valor de la variable. ¿Pero de verdad suma el número 5 a su valor? No. El valor que asignamos a la variable en el método nunca sale de éste, porque solamente pasamos una copia del valor del objeto en lugar de una referencia al objeto. Así es como C# funciona y en muchos casos, es muy útil. Pero aquí, lo que en realidad queremos es modificar el valor de la variable original que pasamos como argumento a nuestra función. Así que escribimos la palabra clave ref:

static void Main(string[] args)
{
    int number = 20;
    AddFive(ref number);
    Console.WriteLine(number);
    Console.ReadKey();
}

static void AddFive(ref int number)
{
    number = number + 5;
}

Como puedes ver, lo único que hicimos es añadir la palabra clave ref en el encabezado de la función así como en la sentencia de llamada a la función. Si corremos el programa con estas modificaciones, verás que el valor de la variable original cambió después de que se ejecutó la llamada a la función.

El modificador out

El modificador out trabaja en forma semejante al ref. Los dos aseguran que el parámetro sea pasado como referencia en lugar de serlo por valor, pero tienen dos diferencias importantes. Un valor pasado como modificador ref tiene que ser inicializado antes de llamar el metodo - esto no es verdad para el modificador out, donde puedes usar un valor inicializado. De otra parte, no puedes dejar una llamada de funcion con un parámetro out sin asignarle un valor a ella. Como tu puedes pasar tanto dentro de un valor inicializado como dentro de un parámetro out, no estás habilitado a usar un parámetro out dentro de una funcion - solamente puedes asignar un nuevo valor a ella.

Si usas o no 'out' o 'ref' depende de la situacion presentada una vez comiences a usarlos. Ambos son usados para trabajar en la obtencion de respuesta para funcion de un solo valor con C#

Usar el modificador 'out' es como usar el 'ref', como aparece arriba. Simplemente usas la clave 'out' en lugar de la 'ref'. En el ejemplo anterior, recuerda quitar el valor asignado al número en el método y, en lugar de eso, decláralo en la llamada de la función.

Los parametros (params) modificadores

Hasta aquí todas nuestras funciones han aceptado una cantidad fija de parámetros. Sin embargo, en algunos casos, podrías necesitar una función que tome un número arbitrario de parámetros. Esto podría ser hecho aceptando una formación o lista como parámetro, por ejemplo la siguiente:

static void GreetPersons(string[] names) { }

Pero, llamarla seria un poco torpe. En la forma mas corta podria lucir como sigue:

GreetPersons(new string[] { "John", "Jane", "Tarzan" });

Esto es aceptable, pero puede hacerse de forma mas inteligente con la clave 'params'

static void GreetPersons(params string[] names) { }

Entonces, llamarla luciría así:

GreetPersons("John", "Jane", "Tarzan");

Otra ventaja de usar la clave 'params', es que también puedes pasarle cero parámetros. Funciones con 'params' incluso pueden recibir otros parámetros, siempre y cuando el parámetro con la clave 'params' sea el último. Además de eso, sólo un parámetro con la clave 'params' puede ser usado por función. Aquí está el último y más completo ejemplo:

static void Main(string[] args)
{
    GreetPersons(0);
    GreetPersons(25, "John", "Jane", "Tarzan");
    Console.ReadKey();
}

static void GreetPersons(int someUnusedParameter, params string[] names)
{
    foreach(string name in names)
Console.WriteLine("Hello, " + name);
}

This article has been deprecated!

This article has been re-organized and updated to better match the rest of the tutorial.

We suggest that you read this article instead: Method parameters


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!