Ćwiczę te delegaty i zdarzenia ale wciąż nie mogę zrozumieć idei ;/
Proszę spojrzeć.
Kod 1: Zdarzenia
using System;
namespace Sample
{
public class SimpleMath
{
public delegate void MathDelegate(string msg);
public event MathDelegate ZadanieSkonczone;
public int Add(params int[] T)
{
int temp = 0;
for(int i = 0; i < T.Length; i++)
temp += T[i];
this.ZadanieSkonczone("Dodawanie skończone");
return temp;
}
public int Subtract(params int[] T)
{
int temp = 0;
foreach (var i in T)
temp += i;
this.ZadanieSkonczone("Odejmowanie skończone");
return temp;
}
}
public class App
{
static void Main()
{
SimpleMath sm = new SimpleMath();
sm.ZadanieSkonczone += sm_ZadanieSkonczone;
Console.WriteLine("Dodawanie: {0}", sm.Add(1, 2, 3, 4, 5, 6, 7, 8, 9, 1));
Console.WriteLine("Odejmowanie: {0}", sm.Subtract(1, 2, 3, 4, 5, 6, 7, 8, 9, 1));
Console.ReadKey(true);
}
static void sm_ZadanieSkonczone(string msg)
{
Console.WriteLine(msg);
}
}
}
Kod 2: Bez zdarzeń
using System;
namespace Sample
{
public class SimpleMath
{
public int Add(params int[] T)
{
int temp = 0;
for(int i = 0; i < T.Length; i++)
temp += T[i];
this.ZadanieSkonczone("Dodawanie skończone");
return temp;
}
public int Subtract(params int[] T)
{
int temp = 0;
foreach (var i in T)
temp += i;
this.ZadanieSkonczone("Odejmowanie skończone");
return temp;
}
public void ZadanieSkonczone(string msg)
{
Console.WriteLine(msg);
}
}
public class App
{
static void Main()
{
SimpleMath sm = new SimpleMath();
Console.WriteLine("Dodawanie: {0}", sm.Add(1, 2, 3, 4, 5, 6, 7, 8, 9, 1));
Console.WriteLine("Odejmowanie: {0}", sm.Subtract(1, 2, 3, 4, 5, 6, 7, 8, 9, 1));
Console.ReadKey(true);
}
}
}
Czyż nie jest to prostsze? Dlaczego niby inne obiekty powinny mieć dostęp do takich zdarzeń?