X

Strona startowa Ludzie pragną czasami się rozstawać, żeby móc tęsknić, czekać i cieszyć się z powrotem.Gdy zakoDczyB si sezon oratoryjny 1750, w ramach kt�rego prawykonana zostaBa Teodora, Handel po raz ostatni wyprawiB si do Rzeszy, kt�rej granice przekroczyB akurat w dniu [mierci Bacha (niewiele wcze[niej i jego |ycie znalazBo si podobno w niebezpieczeDstwie -w zwizku z wypadkiem powozu, kt�rym podr�|owaB przez Holandi)Taktyka na starcie w 3 krokachTaktyka na starcie w 3 krokach2010 paź 30 przez: admin, kategoria: Porady, Regaty tagi:Regaty, start, taktyka regatowaJak...Zawarcia wzorcowej umowy zrzeszania zatwierdzonej przez KNF oraz posiadania w dniu zawarcia umowy co najmniej jednej akcji banku zrzeszającego lub jej...– A obrona?– Obrona to nie cel, to tylko przejściowa forma działań, wymuszona przez przeciwnika...To było piękne, wspaniałe - szczytowy moment w życiu każdego artylerzysty, moment, który przeżywał wciąż od nowa w marzeniach, na jawie i we śnie, przez resztę...Korzy�ci natury zdrowotnej i pedagogicznej wynikaj�ce z powi�kszenia godzin zaj�� WF i sportu oraz intensyfikacji tych zaj��, g��wnie przez prowadzenie ich na �wie�ym...Drugi, Franciszek Czarnecki, czeœnik i pose³ wo³yñski na sejmie w roku 1746, zatamowa³ activitatem izbie poselskiej przez dwa dni, ¿e Wielkopolanie podali projekt...Ale Kaśka nie chce tej prawdy zrozumieć, żyje jeszcze sama za krótko i choć od dziecka widzi nędzę i ból, przez jakie podobne jej istoty przechodzą, wobec...204nym, a nawet �e odno�nik taki jest denotowany w ka�dym j�zyku przez jeden lub wi�cej leksem�w (cho� w pewnych wypadkach mo�e tylko na najog�lniejszym poziomie...Przez pierwsze sto metrów Moon tańczyła jak boja na fali, skupiała całą swą uwagę na bronieniu się przed zadeptaniem, potem ścisk zaczął się rozrzedzać...
 

Ludzie pragną czasami się rozstawać, żeby móc tęsknić, czekać i cieszyć się z powrotem.

Ponieważ jednak Write jest w rzeczywistości delegatem, tak naprawdę wywołana jest metoda, do której delegat zawiera referencję, a więc WriteString. Wynikiem tego prostego przykładu jest:
W CallDelegate
W WriteString: Witaj w delegacie
Warto zwrócić uwagę na fakt, że jako pierwsza wykonywana jest metoda CallDelegate, a dopiero po niej następuje WriteString.
98
Języki .NET
Delegat może być
Delegaty mogą być znacznie bardziej skomplikowane, niż wskazuje na łączony z innymi
to powyższy przykład. Mogą być na przykład łączone tak, by wywoła-delegatami
nie pojedynczego delegata wiązało się z wywołaniem dwóch lub większej liczby delegatów, które zawiera pierwszy z nich. Jednak nawet proste delegaty mogą być przydatne. Dzięki zapewnieniu bezpiecznego sposobu przekazania referencji do metody ułatwiają wykonanie tej czynności w sposób o wiele mnie ryzykowny niż w przypadku wcze-
śniejszych języków.
.NET Framework
Jedno z bardziej popularnych zastosowań delegatów obejmuje obsługę oraz C#
zdarzeń. Na przykład w GUI kliknięcia myszką użytkownika, naciśnięcia zapewniają
klawiszy czy inne formy danych wejściowych mogą być przyjmowane obsługę zdarzeń
jako zdarzenia; zdarzenia są także użyteczne w innych kontekstach.
opartą na
delegatach
Ponieważ zdarzenia są tak popularne, C# oraz .NET Framework zapewniają specjalną pomoc przy wykorzystywaniu delegatów w obsłudze zdarzeń w spójny sposób. Delegat, którego używa zdarzenie, nazywany jest programem obsługi zdarzeń (ang. event handler), choć w rzeczywistości jest to normalny delegat. Platforma .NET Framework definiuje jednak dwie konwencje dla takich programów obsługi zdarzeń:
„ Program obsługi zdarzeń nie zwraca wartości, co oznacza, że typem zwracanej wartości jest void.
„ Program obsługi zdarzeń zawsze przyjmuje dwa argumenty.
Pierwszy argument, identyfikujący źródło zdarzenia, jest zgodnie z konwencją nazywany sender i jest typu System.Object (w C#
jest po prostu typem object, który jest aliasem System.Object).
Dzięki temu odbiorca zdarzenia może łatwo odpowiedzieć do dowolnego obiektu, który zdarzenie spowodował, na przykład wywołując metodę w tym obiekcie. Drugi argument, zawierający dane, które źródło przekazuje, kiedy wywołuje program obsługi zdarzeń, jest tradycyjnie zwany e i jest typu System.EventArgs bądź też typu dziedziczącego po System.EventArgs.
Delegaty
Poniżej znajduje się przykładowa deklaracja programu obsługi zdarzeń: wykorzystywane
public delegate void MyEventHandler(object sender, MyEventArgs e); w zdarzeniach
przestrzegają
W powyższym przykładzie typ MyEventArgs musi pochodzić od pewnych
konwencji
System.EventArgs i musi rozszerzać ten typ bazowy w taki sposób, by mógł on służyć do przekazywania danych zdarzenia. Dla zdarzeń, które nie generują żadnych specyficznych informacji, typem służącym
C#
99
do danych przekazywanych do programu obsługi zdarzeń może być po prostu System.EventArgs (nawet jeśli żadne dane nie są przekazywane, konwencja dotycząca zdarzeń wymaga, by ten parametr nadal pojawiał się w wywołaniu). Ponieważ zdarzenia często nie mają żadnych specyficznych dla nich danych, przestrzeń nazw System obejmuje także wbudowany typ — EventHandler. Typ ten jest po prostu delegatem z dwoma argumentami: obiektem wraz z System.EventArgs.
Kiedy odpowiedni program obsługi zdarzeń (to znaczy delegat zgodny C# dostarcza
z opisanymi powyżej konwencjami) zostanie zadeklarowany, możliwe słowo kluczowe
jest definiowanie zdarzenia z użyciem tego delegata. Poniżej znajduje event, które służy
do deklaracji
się przykład takiej sytuacji:
zdarzeń
public event MyEventHandler MyEvent;
Jak pokazuje powyższy przykład, deklaracja musi składać się ze słowa kluczowego event, natomiast typ musi być typem delegata.
Znając już podstawy, najłatwiej będzie zrozumieć sposób działania zdarzeń dzięki przykładowi. Zaprezentowany poniżej listing zawiera trzy klasy: EventSource, definiującą zdarzenie, EventSink, otrzymującą i odpowiadającą na zdarzenie, oraz EventMain, tworzącą obiekty dwóch pierwszych klas, a następnie generującą zdarzenie. Poniżej znajduje się odpowiedni kod:
public class EventSource
{
public event System.EventHandler EventX;
public void RaiseEventX()
{
if (EventX != null)
EventX(this, System.EventArgs.Empty);
}
}
public class EventSink
{
public EventSink(EventSource es)
{
es.EventX += new
System.EventHandler(ReceiveEvent);
}
public void ReceiveEvent(object sender,
System.EventArgs e)
100
Języki .NET
{
System.Console.WriteLine("EventX wywołane");
}
}

 

Drogi uД‚В„Д№Д„Г„ЕЎД№Вџytkowniku!

W trosce o komfort korzystania z naszego serwisu chcemy dostarczać Ci coraz lepsze usługi. By móc to robić prosimy, abyś wyraził zgodę na dopasowanie treści marketingowych do Twoich zachowań w serwisie. Zgoda ta pozwoli nam częściowo finansować rozwój świadczonych usług.

Pamiętaj, że dbamy o Twoją prywatność. Nie zwiększamy zakresu naszych uprawnień bez Twojej zgody. Zadbamy również o bezpieczeństwo Twoich danych. Wyrażoną zgodę możesz cofnąć w każdej chwili.

 Tak, zgadzam się na nadanie mi "cookie" i korzystanie z danych przez Administratora Serwisu i jego partnerĂłw w celu dopasowania treści do moich potrzeb. Przeczytałem(am) Politykę prywatności. Rozumiem ją i akceptuję.

 Tak, zgadzam się na przetwarzanie moich danych osobowych przez Administratora Serwisu i jego partnerĂłw w celu personalizowania wyświetlanych mi reklam i dostosowania do mnie prezentowanych treści marketingowych. Przeczytałem(am) Politykę prywatności. Rozumiem ją i akceptuję.

Wyrażenie powyższych zgód jest dobrowolne i możesz je w dowolnym momencie wycofać poprzez opcję: "Twoje zgody", dostępnej w prawym, dolnym rogu strony lub poprzez usunięcie "cookies" w swojej przeglądarce dla powyżej strony, z tym, że wycofanie zgody nie będzie miało wpływu na zgodność z prawem przetwarzania na podstawie zgody, przed jej wycofaniem.