Delegaty i interfejsy

0

Witam tak więc uczę się języka c# i mam problem ze zrozumieniem pewnych zagadnień. Właściwie to wiem jak "to" działa tylko nie widzę potrzeby używania tego. Tak więc jeśli komuś się nudzi to prosił bym podać jakiś przykład wykorzystania delegatów i interfejsów.
Nie jako kod ale przykład. Nie mówcie też, że .NET jest przesączony nimi bo jego twórcy używają wszystkiego co wymyślą ;p
Na własnych przykładach proszę ;)

Delegaty:
Co rozumiem to jedynie, że są po to by uprościć sobie kod w sposób, żeby nie wywoływać funkcji w ifach/casach tylko tam przypisywać do delegata i potem użyć raz.
np.

// bez delegata
void A();
void B();
void Main()
{
if(x == 5)
A();
else
B();
} 
// Z delegatem
delegate void AB();
void A();
void B();
void Main()
{
if(x == 5)
AB = A;
else
AB = B;

AB();
} 

No i co to niby robi? Przyśpiesza?
A interfejsów nie ogarniam ;p

0

Nic nie przyspiesza, chyba że pisanie aplikacji. Samo działanie może raczej zwolnić.

Co rozumiem to jedynie, że są po to by uprościć sobie kod w sposób, żeby nie wywoływać funkcji w ifach/casach tylko tam przypisywać do delegata i potem użyć raz.

Niekoniecznie raz. Delegaty (funkcje anonimowe, wyrażenia lambda, to wszystko to samo tylko składnia inna) są między innymi po to, by móc funkcję (nie wynik wywołania funkcji, ale funkcję, czyli kod do wykonania) przekazać jako parametr do innej funkcji.

delegate void AB();

static void wykonaj(int ktora, AB funkcja1, AB funkcja2)
{
  if (ktora==1)
    funkcja1();
  else if (ktora==2)
    funkcja2();
}

static void A() { System.Console.WriteLine("funkcja a"); }
static void B() { System.Console.WriteLine("funkcja b"); }

static void Main()
{
  wykonaj(1, A, B);
  wykonaj(2, A, B);
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1