Funciones
Crear funciones en C# es fundamental para modularizar y reutilizar código. Aquí tienes una explicación detallada sobre cómo hacerlo:
- Sintaxis básica de una función en C#:
- Para declarar una función, utilizamos la palabra clave
void
(o el tipo de dato que queremos devolver) seguido del nombre de la función y los paréntesis()
. - Dentro de los paréntesis, especificamos los parámetros que la función aceptará. Los parámetros son valores que se pasan a la función para que trabaje con ellos.
- El cuerpo de la función se define entre llaves
{}
y contiene las instrucciones que queremos que la función realice.
- Para declarar una función, utilizamos la palabra clave
- Tipos de parámetros:
- Por valor: Se pasa una copia del valor al método. Los cambios dentro del método no afectan la variable original.
- Por referencia: Se pasa el acceso a la variable al método. Los cambios dentro del método afectan la variable original.
- Ejemplos:
using System;
class Program
{
// Ejemplo de función que suma dos números
static int Sumar(int a, int b)
{
return a + b;
}
// Ejemplo de función que modifica un parámetro por referencia
static void Duplicar(ref int numero)
{
numero *= 2;
}
static void Main()
{
int x = 5;
int y = 3;
// Llamada a la función Sumar
int resultado = Sumar(x, y);
Console.WriteLine($"La suma de {x} y {y} es {resultado}");
// Llamada a la función Duplicar
Duplicar(ref x);
Console.WriteLine($"El doble de {y} es {x}");
}
}
En este ejemplo:
Sumar
acepta dos parámetros por valor y devuelve la suma.Duplicar
acepta un parámetro por referencia y duplica su valor.
¡Claro! Vamos a explorar los conceptos de parámetros por defecto y sobrecarga de funciones en C#.
Parámetros por Defecto:
En C#, puedes definir valores predeterminados para los parámetros de una función. Esto permite que la función se llame sin proporcionar valores para esos parámetros, utilizando los valores por defecto definidos en la firma de la función. Algunos puntos clave sobre los parámetros por defecto:
- Las variables con valores por defecto deben estar en el lado derecho de la lista de parámetros.
- Al llamar a la función, no se pueden especificar parámetros después del primero que no se haya especificado.
- Ejemplo:
void MiFuncion(int a, int b, int c = 1, int d = 2)
{
// ...
}
// Llamada a la función con valores por defecto
MiFuncion(10, 20); // c = 1, d = 2
Sobrecarga de Funciones:
La sobrecarga de funciones te permite definir varias funciones con el mismo nombre pero diferentes parámetros. El compilador decidirá cuál función llamar según la forma en que se la invoque. Esto se conoce como polimorfismo. Algunos puntos clave sobre la sobrecarga de funciones:
- Puedes definir varias funciones con el mismo nombre.
- El compilador seleccionará automáticamente la función correcta según los argumentos proporcionados.
- Ejemplo:
class MiClase
{
public void MiMetodo(int a)
{
// ...
}
public void MiMetodo(int a, int b)
{
// ...
}
}
// Llamada a los métodos sobrecargados
MiClase instancia = new MiClase();
instancia.MiMetodo(10); // Llama al primer método
instancia.MiMetodo(10, 20); // Llama al segundo método
La sobrecarga de funciones te permite escribir código más limpio y expresivo al proporcionar diferentes versiones de una función con el mismo nombre.
Supongamos que estamos creando una función para calcular el área de un rectángulo. Queremos que la función acepte dos parámetros: la base y la altura del rectángulo. Sin embargo, también queremos proporcionar valores por defecto para la base y la altura en caso de que no se especifiquen.
using System;
class Program
{
// Función para calcular el área de un rectángulo
static double CalcularAreaRectangulo(double baseRectangulo = 1.0, double alturaRectangulo = 1.0)
{
return baseRectangulo * alturaRectangulo;
}
static void Main()
{
// Llamada a la función sin especificar parámetros (usará los valores por defecto)
double area1 = CalcularAreaRectangulo();
Console.WriteLine($"Área del rectángulo (base 1, altura 1): {area1}");
// Llamada a la función especificando valores diferentes
double area2 = CalcularAreaRectangulo(5.0, 3.0);
Console.WriteLine($"Área del rectángulo (base 5, altura 3): {area2}");
}
}
En este ejemplo, si no proporcionamos valores para baseRectangulo
y alturaRectangulo
, se utilizarán los valores por defecto de 1.0.
Supongamos que estamos creando una clase Calculadora
que debe ser capaz de realizar operaciones matemáticas básicas. Queremos sobrecargar el método Sumar
para que pueda manejar diferentes tipos de datos (enteros, decimales, etc.).
using System;
class Program
{
public static int Sumar(int a, int b)
{
return a + b;
}
public static double Sumar(double a, double b)
{
return a + b;
}
static void Main()
{
// Llamada al método Sumar con enteros
int resultadoEntero = Sumar(10, 20);
Console.WriteLine($"Suma de enteros: {resultadoEntero}");
// Llamada al método Sumar con decimales
double resultadoDecimal = Sumar(5.5, 3.2);
Console.WriteLine($"Suma de decimales: {resultadoDecimal}");
}
}
En este ejemplo, hemos sobrecargado el método Sumar
para que pueda manejar tanto enteros como decimales. El compilador seleccionará automáticamente la versión correcta según los argumentos proporcionados.