Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Delegati...Nije mi jasan kod i uopsteno rad sa delegatima

[es] :: .NET :: Delegati...Nije mi jasan kod i uopsteno rad sa delegatima

[ Pregleda: 1653 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Slavica989
student,fakultet organizacionih nauka

Član broj: 272939
Poruke: 3
*.dynamic.isp.telekom.rs.



Profil

icon Delegati...Nije mi jasan kod i uopsteno rad sa delegatima15.04.2012. u 23:06 - pre 111 meseci
naime, treba da razmisljam kao kompajler pa mi tako i objasnite..kako da znam sta ce mi ispisati na ekranu ako kompajliram sledeci kod

Code (csharp):

class Racun
{
public double stanje;
public string vlasnik;
public Racun(double s, string v)
{
stanje = s;
vlasnik = v;
}
public string Uplata(double iznos)
{
Console.WriteLine(1);
stanje += iznos;
return string.Format("Novo stanje je {0}", stanje);
}
public string Isplata(double iznos)
{
Console.WriteLine(2);
if (stanje < iznos)
return "Nedovoljno sredstava";
stanje -= iznos;
return string.Format("Novo stanje je {0}", stanje);
}
public delegate string ObradaTransakcije(double broj);
public static double provizija = 0.05;
public static string PromeniProviziju(double nova)
{
Console.WriteLine(3);
provizija = nova;
return string.Format("Nova provizija je {0}", provizija);
}
}
class Banka
{
static void Main(string[] args)
{
Racun r = new Racun(400, "Pera");
19
Racun.ObradaTransakcije dg;
dg = r.Uplata;
Console.WriteLine(dg(200));
dg = r.Isplata;
Console.WriteLine(dg(100));
dg = Racun.PromeniProviziju;
Console.WriteLine(dg(0.01));
}
}
 


[Ovu poruku je menjao Aleksandar Ružičić dana 17.04.2012. u 23:49 GMT+1]
 
Odgovor na temu

Dejan Carić
Oslo, Norway

Član broj: 230976
Poruke: 232
82.117.199.*

Sajt: www.dcaric.com


+26 Profil

icon Re: Delegati...Nije mi jasan kod i uopsteno rad sa delegatima18.04.2012. u 09:51 - pre 111 meseci
Delegat referencira metode. Kada mu dodeliš metodu ponaša se isto kao ta metoda.
Code:
public delegate string ObradaTransakcije(double broj);

Ovom delegatu možeš da dodeliš sve metode koje imaju jedan argument tipa double i kojima je povratna vrednost tipa string.

Npr:
Code:

public string A(double x); // ispravno
public int B (double x); // nije ispravno, povratna vrednost metode je tipa int
public string C (double x, double y); // nije ispravno, prima 2 argumenta tipa double umesto jednog
public string D (int x); // nije ispravno, prima argument tipa int umesto double 

Šta radi ova linija:
Code:
Racun r = new Racun(400, "Pera");
Racun.ObradaTransakcije dg = r.Uplata;

Delegatu dg je dodeljena metoda Uplata iz klase Racun. Na početku smo rekli da kada delegatu dodeliš metodu on se ponaša isto kao ta metoda.

Ovo:
Code:
Racun r = new Racun(400, "Pera");
Racun.ObradaTransakcije dg = r.Uplata;

Console.WriteLine(dg(200));

Je ekvivalentno ovome:
Code:
Racun r = new Racun(400, "Pera");
Console.WriteLine(r.Uplata(200));


Jasnije?
 
Odgovor na temu

[es] :: .NET :: Delegati...Nije mi jasan kod i uopsteno rad sa delegatima

[ Pregleda: 1653 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.