csharp-metodos-estaticos

Métodos y campos estáticos en C#

Los métodos y campos estáticos son aquellos que no pertenecen a una instancia en particular, sino que pertenece directamente a la clase en sí misma. Esto significa que podemos llamarlos directamente desde la clase, sin necesidad de crear una instancia de la misma.

Los métodos y campos estáticos tienen sus ventajas, pero también sus inconvenientes. Si queréis aprender más sobre ellos, y cuando usarlos y cuando no, leer el artículo que os he puesto.

Métodos estáticos

Para crear un método estático, añadimos la palabra clave static antes del tipo de retorno.

public class Utilidades
{
    public static int Sumar(int a, int b)
    {
        return a + b;
    }
}

En el ejemplo anterior, Sumar es un método estático. Para llamarlo, no necesitamos instanciar la clase Utilidades:

int resultado = Utilidades.Sumar(5, 3);

Campos estáticos

Un campo estático, similarmente, es una variable que pertenece a la clase en sí y no a instancias específicas de la clase. Todos los objetos de la clase comparten el mismo campo estático.

public class Contador
{
    public static int Cuenta;

    public Contador()
    {
        Cuenta++;
    }
}

En este ejemplo, Cuenta es un campo estático que se incrementa cada vez que se crea una nueva instancia de Contador.

Contador c1 = new Contador();
Contador c2 = new Contador();
Console.WriteLine(Contador.Cuenta); // Output: 2

Ejemplo práctico

Vamos a crear una clase que combine campos y métodos estáticos para ilustrar cómo pueden ser utilizados juntos.

public class Calculadora
{
    // Campo estático
    public static int TotalOperaciones = 0;

    // Método estático
    public static int Sumar(int a, int b)
    {
        TotalOperaciones++;
        return a + b;
    }

    public static int Restar(int a, int b)
    {
        TotalOperaciones++;
        return a - b;
    }

    public static int Multiplicar(int a, int b)
    {
        TotalOperaciones++;
        return a * b;
    }

    public static int Dividir(int a, int b)
    {
        TotalOperaciones++;
        return a / b;
    }
}

En este ejemplo:

  • TotalOperaciones es un campo estático que cuenta el número total de operaciones realizadas.
  • Sumar, Restar, Multiplicar y Dividir son métodos estáticos que realizan operaciones aritméticas y actualizan el campo estático TotalOperaciones.

Ahora podemos usar los campos estáticos de la clase Calculadora sin crear una instancia de la clase.

int suma = Calculadora.Sumar(10, 5);
int resta = Calculadora.Restar(10, 5);
int multiplicacion = Calculadora.Multiplicar(10, 5);
int division = Calculadora.Dividir(10, 5);

Console.WriteLine($"Suma: {suma}");
Console.WriteLine($"Resta: {resta}");
Console.WriteLine($"Multiplicación: {multiplicacion}");
Console.WriteLine($"División: {division}");
Console.WriteLine($"Total de operaciones: {Calculadora.TotalOperaciones}");