Advertisement
kanagara

Untitled

May 22nd, 2020
1,751
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.26 KB | None | 0 0
  1. Prvi vizual:
  2.       //Na ovaj delegat mogu da se pretplate metode koje nemaju povratnu vrednost i primaju parametar string. //Samo na prvom vizualu ostavi ovaj komentar, na ostalima je nepotrebno
  3.         delegate void Print(string patrametar);
  4.      
  5.  
  6.             //Delegate definisete kao obicne promenljive //Ovde isto to vazi
  7.             Print deleg1;
  8.             //Delegatu dodeljujete adresu metode Log
  9.             deleg1 = Log;
  10.             //Pozvace se metoda Log i ispisace se DressCode u konzoli
  11.             deleg1("DressCode");
  12.             //Nije moguce da se metoda sa drugacijim potpisom pretplati na ovaj delegat
  13.             //deleg1 += MultiplyByTwo; //MultiplyByTwo prima i vraca integer, dok delegat Print ne vraca nikakvu vrednost i prima parametar string
  14.  
  15.    void Log(string str){
  16.           Console.WriteLine(str);
  17.         }
  18.         int MultiplyByTwo(int number){
  19.             return number * 2;
  20.         }
  21.  
  22. Drugi Vizual:
  23.  
  24.  
  25. delegate void Print(string patrametar);
  26.            
  27. Print deleg1;
  28. deleg1 = Log;
  29.    //S obzirom da je delegat niz metoda, mozete da ih ulancavate opeartorom +=
  30.             deleg1 += LogWithDate;
  31.             //DressCode ce se logovati na konzoli dva puta - prvi put bez datuma, a drugi put sa njim
  32.             deleg1("DressCode");
  33.             //Ukoliko zelite da neka metoda vise ne bude pozivana kada se delegat pozove, mozete je obrisati iz liste koriscenjem operatora -=
  34.             deleg1 -= LogWithDate;
  35.             //Znak jednakosti brise sve prethodne reference na metode. U ovom slucaju je LogWithDate jedina metoda na koju se pokazuje
  36.             deleg1 = LogWithDate;
  37.             //Brisanje iz interne liste svih metoda na koje je delegat pokazivao
  38.             deleg1 = null;
  39.             //Ovde se pojavljuje NullReferenceException izuzetak zato sto delegat nema nijednu metodu na koju pokazuje
  40.             deleg1("DressCode");
  41.            
  42.             //Zato kod pozivanja delegata je najbolje koristiti null-conditional operator, koji ce vas zaštiti od NullreferenceException izuzetka
  43.             deleg1?.Invoke("DressCode");
  44.  
  45.   void Log(string str){
  46.           Console.WriteLine(str);
  47.         }
  48.  
  49.         void LogWithDate(string str){
  50.             Console.WriteLine($"{DateTime.Now.ToString()} {str}");
  51.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement