kanagara

Untitled

May 22nd, 2020
1,617
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.32 KB | None | 0 0
  1. delegate void Print(string patrametar);
  2.            
  3. Print deleg1;
  4. deleg1 = Log;
  5.    //S obzirom da je delegat niz metoda, one se mogu ulancavati operatorom +=
  6.             deleg1 += LogWithDate;
  7.             //DressCode ce se logovati na konzoli dva puta - prvi put bez datuma, a drugi put sa njim
  8.             deleg1("DressCode");
  9.             //Ukoliko zelite da neka metoda vise ne bude pozivana kada se delegat pozove, mozete je obrisati iz liste koriscenjem operatora -=
  10.             deleg1 -= LogWithDate;
  11.             //Znak jednakosti brise sve prethodne reference na metode. U ovom slucaju je LogWithDate jedina metoda na koju se pokazuje
  12.             deleg1 = LogWithDate;
  13.             //Brisanje iz interne liste svih metoda na koje je delegat pokazivao
  14.             deleg1 = null;
  15.             //Ovde se pojavljuje NullReferenceException izuzetak zato sto delegat nema nijednu metodu na koju pokazuje
  16.             deleg1("DressCode");
  17.            
  18.             //Zato je kod pozivanja delegata najbolje koristiti Null-Conditional operator, koji ce da vas zastiti od NullReferenceException izuzetka
  19.             deleg1?.Invoke("DressCode");
  20.  
  21.   void Log(string str){
  22.           Console.WriteLine(str);
  23.         }
  24.  
  25.         void LogWithDate(string str){
  26.             Console.WriteLine($"{DateTime.Now.ToString()} {str}");
  27.         }
Add Comment
Please, Sign In to add comment