Programowanie w języku C#

Metody statyczne

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>
    }
}

2 komentarze

yankesxx 2006-05-21 16:51

"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 :)

yankesxx 2006-05-21 16:50

"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 :)