69 - Métodos estáticos |
En C# podemos definir métodos que se crean independientemente a la definición de objetos. Un método estático puede llamarse sin tener que crear un objeto de dicha clase. Un método estático tiene ciertas restricciones:
Si recordamos cada vez que creamos un programa en C# debemos especificar el método Main:
static void Main(string[] args)
El método Main es estático para que el sistema operativo pueda llamarlo directamente sin tener que crear un objeto de la clase que lo contiene.
Implementar una clase llamada Operacion. Definir dos métodos estáticos que permitan sumar y restar dos valores enteros.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace MetodosEstaticos1 { class Operacion { public static int Sumar(int x1, int x2) { int s = x1+x2; return s; } public static int Restar(int x1,int x2) { int r = x1 - x2; return r; } } class Program { static void Main(string[] args) { Console.Write("La suma de 2+4 es "); Console.WriteLine(Operacion.Sumar(2, 4)); Console.Write("La resta de 6-2 es "); Console.WriteLine(Operacion.Restar(6, 2)); Console.ReadKey(); } } }
Agregamos la palabra clave static antes de indicar el valor que retorna el método:
public static int Sumar(int x1, int x2) { int s = x1+x2; return s; }
Luego cuando llamamos al método estático lo hacemos antecediendo el nombre de la clase:
Console.Write("La suma de 2+4 es "); Console.WriteLine(Operacion.Sumar(2, 4)); Console.Write("La resta de 6-2 es "); Console.WriteLine(Operacion.Restar(6, 2));
Es importante notar que no se crean objetos de la clase Operacion para poder llamar a los métodos Sumar y Restar.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace MetodosEstaticos2 { class VectorEnteros { public static int Mayor(int[] vec) { int may = vec[0]; for (int x = 0; x < vec.Length; x++) { if (vec[x] > may) { may = vec[x]; } } return may; } public static int Menor(int[] vec) { int men = vec[0]; for (int x = 0; x < vec.Length; x++) { if (vec[x] < men) { men = vec[x]; } } return men; } public static int SumaElementos(int[] vec) { int suma = 0; for (int x = 0; x < vec.Length; x++) { suma = suma + vec[x]; } return suma; } public static void Imprimir(int[] vec) { Console.Write("Impresión del vector:"); for (int x = 0; x < vec.Length; x++) { Console.Write(vec[x] + " "); ; } Console.WriteLine(); } } class Program { static void Main(string[] args) { int[] v = { 5, 6, 20 }; VectorEnteros.Imprimir(v); Console.WriteLine("El mayor elemento del vector es :" + VectorEnteros.Mayor(v)); Console.WriteLine("El menor elemento del vector es :" + VectorEnteros.Menor(v)); Console.Write("La suma de los elementos del vector es :" + VectorEnteros.SumaElementos(v)); Console.ReadKey(); } } }