Metody i klasy częściowe - partial methods, partial class

Typy częściowe - jedna klasa w kilku plikach.


Metody i klasy częściowe to nowość wprowadzona w C# 3.0. Dzięki słowu kluczowemu partial możliwe jest podzielenie klasy, struktury, interfejsu lub metody na kilka części w osobnych plikach. Wszystkie klasy częściowe muszą być dostępne do kompilacji ponieważ zostają połączone w jedną klasę i muszą sie znajdować w obrębie jednego pliku .dll lub .exe.

Aby można było stworzyć częściową klasę lub metodę:

  • każda część musi być poprzedzona słowem kluczowym partial,
  • wszystkie części muszą mieć taka samą dostępność (public, private itp.),
  • jeśli jedna część dziedziczy po innym typie to wszystkie części po nim dziedziczą,
  • jeśli jakakolwiek część jest zadeklarowana jako sealed to wszystkie części są sealed,
  • jeśli jakakolwiek część jest zadeklarowana jako abstract to wszystkie części są abstract.

Przykładowy kod klasy częściowej:

namespace Aplikacja1
{
    partial class Czesciowa
    {
        public void Metoda1(){}
        public void Metoda2(){}
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            Czesciowa obiekt = new Czesciowa();
            obiekt.Metoda3();
            obiekt.Metoda1();
        }
    }
 
    partial class Czesciowa
    {
        public void Metoda3() { }
        public void Metoda4() { }
    }
}

Metody częściowe

W przypadku metod częściowych, w jednym pliku możemy zamieścić deklaracje metody a w innym pliku ciało metody. Podczas kompilacji, deklaracje metod które nie mają ciała w żadnym pliku zostają usunięte. Dzięki temu kod jest optymalny.

Metody częściowe:

  • muszą zwracać void i zaczynać się od słowa kluczowego partial,
  • mogą przyjmować parametry przez referencje (ref), ale nie mogą przyjmować parametrów przez wyjście (out),
  • są niejawnie private i nie mogą być virtual,
  • nie mogą być extern,
  • mogą być static oraz unsafe,
  • mogą być generyczne,
  • można tworzyć delegaty do metod, które są zdefiniowane i zaimplementowane (mają ciało funkcji).

Deklaracja i ciało metody częściowej:

//plik nr 1
public int Metoda();
 
//plik nr 2
public int Metoda()
{
//ciało metody
}

Więcej informacji na temat metod i klas częściowych:

http://msdn.microsoft.com/pl-pl/library/wa80x488.aspx
Komentarze facebook (polub nasz profil na FB aby je zobaczyć):