Metody statyczne
darek963
Metody statyczne
Aby wywołać zwykłą metodę należy w pierwszej kolejności zadeklarować i zainicjować obiekt danej klasy. Jeśli metoda działa na rzecz struktur zawartych w tej samej klasie nie ma w tym nic złego. Natomiast jeśli chcemy tworzyć metody, które nie operują na strukturach klasy powinniśmy posłużyć się metodami statycznymi. Można je wywoływać nie tworząc bytu obiektu i tym samym nie alokować dodatkowej pamięci.Używanie metod statycznych niesie za sobę pewne ograniczenia:
*nie możemy ich wywoływać na rzecz stworzonego obiektu (tzn. że jeśli stworzymy obiekt klasy, która zawiera metodę statyczną to nie będzie ona dostępna dla tego obiektu)
*możemy w nich odwoływać się tylko do metod, które są również zadeklarowane jako statyczne (nie odwołują się na rzecz obiektu)
Przykłady
Dobrym przykładem już zaimplementowanych metod statycznych w środowisku VS C# są metody klasy Convert:int liczba = Convert.ToInt32("123");
Proszę zwrócić uwagę, że wywołujemy metodę ToInt32() zawartą w klasie Convert nie tworząc obiektu tej klasy.
Poniższy kod pokazuje jak deklarować metody zwykłe i statyczne oraz jak z nich korzystać:
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int wynik = 0;
// <uzycie metody statycznej>
// uzycie metody statycznej nie wymaga
// tworzenia obiektu
wynik = DodawanieLiczb.MetodaStatyczna(5, 3);
// </uzycie metody statycznej>
Console.WriteLine("Metoda statyczna: " + wynik);
// <uzycie metody zwyklej>
// aby uzyc zwyklej metody nalezy
// stworzyc obiekt klasy, w ktorej jest metoda
DodawanieLiczb ObiektDodawanie;
ObiektDodawanie = new DodawanieLiczb();
wynik = ObiektDodawanie.MetodaZwykla(5, 3);
// </uzycie metody zwyklej>
Console.WriteLine("Metoda zwykla: " + wynik);
Console.ReadKey();
}
}
class DodawanieLiczb
{
// <metoda zwykla>
public int MetodaZwykla(int parametr1, int parametr2)
{
return (parametr1 + parametr2);
}
// </metoda zwykla>
// <metoda statyczna>
public static int MetodaStatyczna(int parametr1, int parametr2)
{
return (parametr1 + parametr2);
}
// </metoda statyczna>
}
}
"nie możemy ich wywoływać na rzecz stworzonego obiektu" ??
zawsze można odwołać się do obiektu danej klasy przez metodę statyczne korzystająć z referencji :)
"nie możemy ich wywoływać na rzecz stworzonego obiektu" ??
zawsze można odwołać się do obiektu danej klasy przez metodę statyczne korzystająć z referencji :)