csharp-parametros-funciones

Parámetros de funciones en C#

Los parámetros son variables que una función puede recibir cuando es invocada y que se definen en la declaración de una función.

Los parámetros permiten que las funciones sean más reutilizables y modulares (ya que permiten pasar diferentes datos a una misma función).

Parámetros por valor y referencia

Parámetros por Valor

Los parámetros por valor son los más comunes. Cuando se pasan parámetros por valor, se pasa una copia del valor a la función (lo que significa que cualquier modificación dentro de la función no afecta al valor original)

public void Incrementar(int numero)
{
    numero++;
    Console.WriteLine(numero); // Muestra 6
}

int valor = 5;
Incrementar(valor);
Console.WriteLine(valor); // Muestra 5

Parámetros por Referencia

Pasar parámetros por referencia permite a la función modificar el valor original de la variable que hemos pasado a la función. Esto se logra usando la palabra clave ref.

public void Incrementar(ref int numero)
{
    numero++;
}

int valor = 5;
Incrementar(ref valor);
Console.WriteLine(valor); // Muestra 6

Parámetros in y out

Parámetros de salida out

Los parámetros out son similares a los parámetros ref, pero se utilizan principalmente para devolver múltiples valores desde una función. Es obligatorio asignar un valor al parámetro out dentro de la función antes de que esta termine.

public void ObtenerValores(out int a, out int b)
{
    a = 1;
    b = 2;
}

int x, y;
ObtenerValores(out x, out y);
Console.WriteLine($"x: {x}, y: {y}"); // Muestra x: 1, y: 2

Parámetros de entrada in

Los parámetros in permiten pasar argumentos por referencia pero garantizan que no serán modificados por la función.

public void MostrarValor(in int numero)
{
    Console.WriteLine(numero);
}

int valor = 5;
MostrarValor(valor); // Muestra 5

Parámetros opcionales

C# permite definir parámetros opcionales, que son aquellos que tienen un valor predeterminado y pueden ser omitidos al llamar a la función.

public void Saludar(string nombre = "Mundo")
{
    Console.WriteLine($"Hola, {nombre}!");
}

Saludar(); // Muestra "Hola, Mundo!"
Saludar("Juan"); // Muestra "Hola, Juan!"

Parámetros nombrados

Los parámetros nombrados permiten especificar explícitamente los nombres de los parámetros al llamar a una función, permitiendo omitir algunos parámetros opcionales.

public void CrearPersona(string nombre, int edad, string ciudad = "Desconocida")
{
    Console.WriteLine($"{nombre}, {edad} años, {ciudad}");
}

CrearPersona(edad: 30, nombre: "Ana"); // Muestra "Ana, 30 años, Desconocida"

Parámetros variádicos

Los parámetros variádicos permiten pasar un número variable de argumentos a una función usando la palabra clave params. Solo se puede tener un parámetro params y debe ser el último en la lista de parámetros.

public void ImprimirNumeros(params int[] numeros)
{
    foreach (int numero in numeros)
    {
        Console.WriteLine(numero);
    }
}

ImprimirNumeros(1, 2, 3, 4, 5); // Muestra 1 2 3 4 5