Operator Konwersji

Johniak

Operator konwersji umożliwia ustalone prze-konwertowania naszego Typu do tego, który jest wymagany. Jest on wywoływany w momentach takich jak:

int a = 1; 
float b = a; 

Gdy sami tworzymy jakieś klasy, które mają zintegrować kod operując na jakichś obiektach lub porostu rozszerzyć jakąś klasę która nie umożliwia dziedziczenia (struktury) stosowanie własnych operatorów konwersji będzie niezbędne.

Definicja konwersji będzie wyglądała w ten sposób:

SpecyfikatorDostepu TypKonwersji operator TypWyjsciowy(DanaWejściowa)

SpecyfikatorDostępu - public/private

TypKonwersji - impilicit /expilicit (niejawna/jawna - konwersje jawną należy wywoływać)
TypWyjściowy - jakiś typ np. int/double/byte
operator - słowo operator
DanaWejściowa- dana z której będziemy przetwarzać(musi być tego samego typu co klasa)

Przykład będzie pokazywać konwersje do typu Point(struktura należąca do System.Drawing nie umożliwia dodawania, ani innych operacji).

Przykład:

class GrfPoint //Nie można dziedziczyć po Point ponieważ jest strukturą
{
        
        //metody i operatory rozbudowujące klase 
       .
       .
       .

     public static explicit operator Point(GrfPoint p) //publiczna jawna konwersja do typu Point z typu GrfPoint
    {
      return new Point((int)p.X, (int)p.Y);
    }

}

Przykład wykorzystania:

static class program
{
        static void Main()
       {
             Point pkt;
             GrfPoint grfPkt = new GrfPkt();
             pkt = (Point)grfPkt; // przy konwerterze niejawnym nie potrzebne jest (Typ)-(Point)
      
       }
}

0 komentarzy