Métodos de C#

En C#, un método es un bloque de código que realiza una tarea específica y que puede ser llamado (invocado) desde otras partes del programa. Los métodos se utilizan para agrupar el comportamiento y la funcionalidad relacionada en un lugar centralizado y reutilizable en todo el programa.

Cada método tiene un nombre único y una lista de parámetros que se utilizan para pasar información al método y, opcionalmente, devolver información al código que lo invoca.

Crear un método

Un método en C# es una unidad de código que realiza una tarea específica y se puede llamar desde otro código. Se utiliza para estructurar y modularizar programas en pequeñas partes reutilizables. Para crear un método en C#, se utiliza la siguiente sintaxis:


[modificadores] tipoDeRetorno NombreDelMetodo([parametros]) {
    // cuerpo del método
}

Lenguaje del código: C# (cs)
  • modificadores: Son opcionales y modifican el comportamiento del método. Por ejemplo, static indica que el método es estático, y public indica que el método es visible fuera de la clase donde se define.
  • tipoDeRetorno: Es el tipo de dato que devuelve el método. Puede ser cualquier tipo de dato válido en C#, o void si el método no devuelve ningún valor.
  • NombreDelMetodo: Es el nombre que se le da al método.
  • parametros: Son variables que se pasan al método para que lo utilice durante su ejecución. Se especifican entre paréntesis y separados por comas.

El cuerpo del método contiene las instrucciones que se ejecutan cuando se llama al método. Puede contener variables locales, declaraciones, estructuras de control de flujo, llamadas a otros métodos, etc.

Un ejemplo simple de un método en C# que toma dos números enteros como argumentos y devuelve la suma de los mismos es el siguiente:


public int Sumar(int a, int b)
{
    int resultado = a + b;
    return resultado;
}

Lenguaje del código: C# (cs)

En este ejemplo, se define el método Sumar, que toma dos parámetros de tipo int y devuelve la suma de ellos. El método se llama en el método Main con los argumentos 4 y 5, y el resultado se almacena en la variable resultado, que luego se muestra en la consola.

Llamar un método

Para llamar un método en C#, primero debemos tener definido el método en nuestra clase y luego podemos llamarlo utilizando el nombre del método seguido de paréntesis y los argumentos requeridos (si es que los tiene). Aquí hay un ejemplo:

Supongamos que tenemos el siguiente método definido en nuestra clase:


public void Saludar(string nombre)
{
    Console.WriteLine("¡Hola, " + nombre + "!");
}

Lenguaje del código: C# (cs)

Podemos llamar este método desde otra parte de nuestra clase (o desde otra clase en nuestro programa) de la siguiente manera:


Saludar("Juan");

Lenguaje del código: C# (cs)

Esto imprimirá «¡Hola, Juan!» en la consola.

Parámetros del método C#

Los parámetros de un método en C# son las variables que se utilizan dentro del cuerpo del método para realizar ciertas operaciones y cuyos valores son proporcionados por el llamador del método. Estos parámetros se definen en la firma del método y pueden ser opcionales o requeridos.

Existen dos tipos de parámetros en C#:

  • Parámetros de valor: se pasan como copia del valor de la variable original. Cualquier modificación realizada dentro del método no afectará la variable original.
  • Parámetros de referencia: se pasan como una referencia a la variable original. Cualquier modificación realizada dentro del método afectará directamente a la variable original.

La sintaxis para definir un método con parámetros en C# es la siguiente:


public static void NombreMetodo(TipoParametro1 nombreParametro1, TipoParametro2 nombreParametro2, ...)
{
    // Cuerpo del método
}

Lenguaje del código: C# (cs)

Donde TipoParametro es el tipo de dato del parámetro y nombreParametro es el nombre que se le dará al parámetro dentro del método. Los parámetros se separan por comas y se pueden definir tantos como se necesiten.

Al llamar al método, se deben proporcionar los argumentos o valores para cada uno de los parámetros definidos en la firma del método:


NombreMetodo(valorParametro1, valorParametro2, ...);

Lenguaje del código: C# (cs)

Aquí te muestro un ejemplo sencillo de un método que recibe dos números enteros como parámetros, los suma y retorna el resultado:


public int Sumar(int num1, int num2)
{
    int resultado = num1 + num2;
    return resultado;
}

Lenguaje del código: C# (cs)

En este ejemplo, el método se llama Sumar y tiene dos parámetros de tipo entero llamados num1 y num2. Dentro del método, se realiza la operación de suma entre los dos parámetros y el resultado se almacena en una variable llamada resultado. Luego, se retorna el valor de la variable resultado.

Para llamar a este método, se puede hacer lo siguiente:


int a = 5;
int b = 7;
int c = Sumar(a, b); // c = 12

Lenguaje del código: C# (cs)

En este caso, se crean dos variables de tipo entero llamadas a y b con valores 5 y 7, respectivamente. Luego, se llama al método Sumar y se pasan las variables a y b como parámetros. El resultado de la suma se almacena en una variable llamada c, que en este caso tendrá un valor de 12.

Parámetros y argumentos en C#

En C#, un método puede recibir cero o más parámetros. Los parámetros son variables que se declaran en la definición del método y se utilizan para recibir argumentos cuando se llama al método. Los argumentos son valores que se pasan al método cuando se llama.

Los parámetros pueden ser de diferentes tipos de datos, como enteros, flotantes, cadenas, matrices, etc. Los parámetros pueden ser opcionales o requeridos. Los parámetros opcionales tienen un valor predeterminado que se utiliza si no se proporciona un argumento para ese parámetro.

Aquí hay un ejemplo simple de un método que toma dos parámetros:


public void Saludar(string nombre, int edad)
{
    Console.WriteLine("Hola {0}, tienes {1} años!", nombre, edad);
}

Lenguaje del código: C# (cs)

En este ejemplo, el método Saludar tiene dos parámetros: nombre, que es una cadena, y edad, que es un entero. Cuando se llama al método, se deben proporcionar los argumentos correspondientes:


Saludar("Juan", 30);

Lenguaje del código: C# (cs)

En este caso, «Juan» es el argumento para el parámetro nombre y 30 es el argumento para el parámetro edad. El método imprimirá «Hola Juan, tienes 30 años!».

Parámetros múltiples en C#

Los parámetros múltiples en C# permiten a un método aceptar un número variable de argumentos. Esto se logra utilizando la palabra clave params en la definición del parámetro.

La sintaxis para declarar un parámetro múltiple es la siguiente:


tipo[] nombreParametro

Lenguaje del código: C# (cs)

donde tipo es el tipo de los elementos que se pasarán como argumentos y nombreParametro es el nombre del parámetro seguido del modificador params.

Aquí hay un ejemplo simple que ilustra cómo se pueden utilizar los parámetros múltiples en C#:


public void MostrarElementos(params int[] numeros)
{
    for (int i = 0; i < numeros.Length; i++)
    {
        Console.WriteLine(numeros[i]);
    }
}

Lenguaje del código: C# (cs)

En este ejemplo, el método MostrarElementos acepta un número variable de argumentos de tipo int. Dentro del cuerpo del método, se utiliza un bucle for para recorrer y mostrar todos los elementos del array.

Este método se puede llamar de la siguiente manera:


int[] numeros = { 1, 2, 3, 4, 5 };
MostrarElementos(numeros);
MostrarElementos(6, 7, 8);

Lenguaje del código: C# (cs)

En el primer llamado, se pasa un array numeros de tipo int que contiene cinco elementos. En el segundo llamado, se pasan tres argumentos int separados por comas. En ambos casos, el método MostrarElementos puede aceptar el número variable de argumentos debido al modificador params.

Aquí hay otro ejemplo de cómo definir un método que acepta múltiples parámetros en C# y cómo llamar a ese método con diferentes argumentos:


using System;

namespace EjemploParametrosMultiples
{
    class Program
    {
        static void Main(string[] args)
        {
            // Llamando al método con diferentes argumentos
            MostrarInformacion("Juan", "Pérez", 30);
            MostrarInformacion("María", "González", 25);
            MostrarInformacion("Pedro", "Rodríguez", 40);
        }

        // Definición de un método que acepta múltiples parámetros
        static void MostrarInformacion(string nombre, string apellido, int edad)
        {
            Console.WriteLine("Nombre: " + nombre);
            Console.WriteLine("Apellido: " + apellido);
            Console.WriteLine("Edad: " + edad);
            Console.WriteLine("--------");
        }
    }
}

Lenguaje del código: C# (cs)

En este ejemplo, el método MostrarInformacion acepta tres parámetros: nombre, apellido y edad. Estos parámetros se utilizan para mostrar información de una persona en la consola.

El método es llamado tres veces con diferentes argumentos y en cada llamada se muestra la información correspondiente en la consola.

Parámetros predeterminados en C#

Los parámetros predeterminados en C# son aquellos que tienen un valor asignado por defecto. Esto significa que si no se proporciona un valor para un parámetro, se utilizará el valor predeterminado.

Para definir un parámetro predeterminado en C#, simplemente se especifica un valor para el parámetro en la definición del método. Aquí hay un ejemplo:


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

Lenguaje del código: C# (cs)

En este ejemplo, el parámetro nombre tiene un valor predeterminado de «mundo». Si se llama al método sin proporcionar un valor para el parámetro nombre, se utilizará el valor predeterminado «mundo». Por ejemplo:


Saludar(); // Salida: Hola, mundo!
Saludar("Juan"); // Salida: Hola, Juan!

Lenguaje del código: C# (cs)

En el primer ejemplo, el método Saludar se llama sin proporcionar un valor para el parámetro nombre, por lo que se utiliza el valor predeterminado «mundo».

En el segundo ejemplo, se proporciona el valor «Juan» para el parámetro nombre, por lo que se utiliza ese valor en lugar del valor predeterminado.

Palabra clave return en C#

La palabra clave return se utiliza en C# para salir de un método y devolver un valor opcional. Si un método tiene un tipo de retorno, el valor que se devuelve debe ser del mismo tipo que el tipo de retorno del método.

Cuando se encuentra la instrucción return, el control se devuelve al punto de llamada del método y se devuelve el valor especificado. Si el método no devuelve un valor, la instrucción return simplemente sale del método.

Aquí hay un ejemplo simple de un método que utiliza la instrucción return:

using System;

public class Program
{
    public static void Main()
    {
        // Llamamos al método Sumar y guardamos el resultado en una variable
        int resultado = Sumar(5, 3);
        Console.WriteLine("El resultado de la suma es: " + resultado);
    }

    // Definimos el método Sumar que recibe dos parámetros de tipo int y devuelve un int
    public static int Sumar(int numero1, int numero2)
    {
        // Calculamos la suma de los dos números y la guardamos en una variable local
        int resultado = numero1 + numero2;

        // Usamos la palabra clave return para devolver el resultado del cálculo
        return resultado;
    }
}
Lenguaje del código: C# (cs)

En este ejemplo, el método Sumar recibe dos parámetros de tipo int y devuelve un int. En el cuerpo del método, se calcula la suma de los dos números y se almacena en una variable local llamada resultado. Luego, se utiliza la palabra clave return para devolver el resultado del cálculo.

En el método Main, se llama al método Sumar y se almacena el resultado en una variable llamada resultado. Finalmente, se imprime el resultado en la consola. El resultado de este programa sería:


El resultado de la suma es: 8

Argumentos con nombre en C#

Los argumentos con nombre son una característica de C# que permite proporcionar valores de argumentos a un método especificando el nombre del parámetro al que se debe asignar el valor, en lugar de proporcionar los argumentos en el orden en que aparecen en la lista de parámetros del método.

La ventaja de los argumentos con nombre es que el código se vuelve más legible y menos propenso a errores, especialmente en métodos con muchos parámetros.

Para usar argumentos con nombre en C#, simplemente debes proporcionar el nombre del parámetro seguido de dos puntos y el valor del argumento. Aquí te muestro un ejemplo:

using System;

class Program
{
    static void Main()
    {
        // llamada al método con argumentos con nombre
        ImprimirNombre(apellido: "González", nombre: "Juan");
    }

    static void ImprimirNombre(string nombre, string apellido)
    {
        Console.WriteLine("{0} {1}", nombre, apellido);
    }
}

Lenguaje del código: C# (cs)

En el ejemplo anterior, se llama al método ImprimirNombre pasando los argumentos nombre y apellido utilizando la sintaxis de argumentos con nombre.

Al utilizar esta sintaxis, el orden de los argumentos no importa, ya que los valores se asignan según el nombre del parámetro.

Como resultado, el método ImprimirNombre muestra por pantalla: «Juan González».

Argumentos opcionales en C#

En C#, se pueden utilizar argumentos opcionales en los métodos para permitir que los argumentos no necesiten ser proporcionados en cada llamada de método. Esto puede hacer que el código sea más legible y fácil de usar.

Para definir un argumento como opcional, se utiliza la palabra clave default para asignar un valor predeterminado al argumento. Si no se proporciona un valor al llamar al método, se utilizará el valor predeterminado.

También se puede omitir el argumento opcional en la llamada del método para usar su valor predeterminado.

Aquí hay un ejemplo de cómo usar un argumento opcional en un método:


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

// Llamada con el argumento opcional
Saludar("Juan"); // Salida: Hola, Juan!

// Llamada con un valor diferente para el argumento opcional
Saludar("María", "Buenos días"); // Salida: Buenos días, María!

Lenguaje del código: C# (cs)

En este ejemplo, el método Saludar tiene un argumento opcional llamado saludo que tiene un valor predeterminado de «Hola». En la primera llamada al método, se omite el argumento saludo, por lo que se utiliza el valor predeterminado.

En la segunda llamada, se proporciona un valor diferente para saludo, por lo que se usa ese valor en lugar del valor predeterminado.

Sobrecarga de métodos en C#

La sobrecarga de métodos es una característica en C# que permite definir varios métodos con el mismo nombre en una misma clase, siempre y cuando tengan diferentes parámetros.

Esto permite a los programadores proporcionar distintas implementaciones de un mismo método con diferentes tipos y números de parámetros.

Cuando se invoca un método sobrecargado, el compilador determina qué versión del método utilizar basándose en el número y tipos de argumentos que se le pasan. En otras palabras, el compilador elige la versión del método que mejor coincide con los argumentos proporcionados.

La sobrecarga de métodos es muy útil para crear interfaces más intuitivas para los usuarios de la clase, ya que permite que los métodos tengan los mismos nombres que describen su funcionalidad, pero que puedan tomar diferentes tipos de datos como argumentos.

Por ejemplo, se puede tener una clase Calculadora con varios métodos con el mismo nombre Sumar, pero con diferentes parámetros, para sumar números enteros, flotantes y otros tipos de datos.

Aquí hay un ejemplo de sobrecarga de métodos en C#:


using System;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine(Suma(1, 2));    // Imprime "3"
        Console.WriteLine(Suma(1.5, 2.5));  // Imprime "4.0"
        Console.WriteLine(Suma("Hola ", "Mundo!"));  // Imprime "Hola Mundo!"
    }

    static int Suma(int num1, int num2)
    {
        return num1 + num2;
    }

    static double Suma(double num1, double num2)
    {
        return num1 + num2;
    }

    static string Suma(string str1, string str2)
    {
        return str1 + str2;
    }
}

Lenguaje del código: C# (cs)

Este programa tiene un método llamado Suma que está sobrecargado para trabajar con diferentes tipos de datos.

El primer método Suma toma dos enteros y devuelve un entero, el segundo método toma dos números de punto flotante y devuelve un número de punto flotante, y el tercer método toma dos cadenas y las concatena.

En la función Main, se llama a cada uno de estos métodos con diferentes argumentos y se imprime el resultado.

Cada método tiene el mismo nombre, pero toma diferentes parámetros. El compilador de C# puede distinguir entre ellos en función de la lista de parámetros, y llamará al método adecuado en función de los tipos de datos que se están pasando.

La sobrecarga de métodos es una técnica muy útil en programación, ya que permite que un método realice diferentes tareas según el tipo de datos que se le pasan.