Új hozzászólás Aktív témák

  • Lakers

    tag

    Sziasztok!

    Van néhány kódrészlet, amit nem értek, és ahhoz kérnék segítséget, hogy ha valaki leírná, lépésről, lépésre, hogy mit miért csinál a program:

    Kódrészletek:

    class Ló
    {
    public string Name { get; set; }

    public DateTime Born { get; private set; }

    public int? Price { get; set; }


    public Ló(string name, DateTime born)
    {
    Name = name;
    Born = born;
    Awards = new List<Award>();
    }

    public List<Award> Awards { get; set; }

    public event EventHandler<LóversenyEventArgs> Verseny;

    public bool Versenyez(string versenynév)
    {
    if (Verseny != null)
    {
    LóversenyEventArgs lvea =new LóversenyEventArgs(versenynév);
    Verseny(this, lvea);
    }
    Random r = new Random();
    int i = r.Next(0, 10);
    //return i < 2 ? true : false;
    return i < 2;
    }

    public override string ToString()
    {
    return String.Format("Név: {0}, született: {1}, ár: {2}",
    Name, Born, Price == null ? "N/A" : Price.ToString());
    //price ?? 0
    }
    }

    class Award
    {
    public string Name { get; set; }
    public int Prize { get; private set; }

    public Award(string name, int prize)
    {
    Name = name;
    Prize = prize;
    }
    }

    class Függő
    {
    public void FelrakjaAzÖsszesPénzét(object sender, LóversenyEventArgs e)
    {
    Console.WriteLine("FUSS, {0}, FUSS!!!\nVerseny: {1}",
    ((Ló)sender).Name.ToUpper(), e.VersenyNév);
    }

    class LóversenyEventArgs : EventArgs
    {
    public string VersenyNév { get; private set; }

    public LóversenyEventArgs(string vn)
    {
    VersenyNév = vn;
    }

    }

    class Program
    {
    static void Main(string[] args)
    {
    List<Ló> lovak = new List<Ló>
    {
    new Ló("Kincsem", DateTime.Now) {Price =2000},
    new Ló("Alma", DateTime.Now) {Price = 11000},
    new Ló("Béka", DateTime.Now)
    };

    Függő f = new Függő();
    foreach (Ló l in lovak)
    l.Verseny += f.FelrakjaAzÖsszesPénzét;

    foreach (Ló l in lovak)
    {
    if (l.Versenyez("Négybalpata"))
    {
    Award a = new Award("Négybalpata", 1);
    l.Awards.Add(a);
    Console.WriteLine("A díjat nyerte: " + l.ToString());
    }
    else
    Console.WriteLine("Ma is hasznavehetetlen: " + l.ToString());
    }
    ...

    Amit nem értek a következő részlet:

    Függő f = new Függő();
    foreach (Ló l in lovak)
    l.Verseny += f.FelrakjaAzÖsszesPénzét;

    foreach (Ló l in lovak)
    {
    if (l.Versenyez("Négybalpata"))
    {
    Award a = new Award("Négybalpata", 1);
    l.Awards.Add(a);
    Console.WriteLine("A díjat nyerte: " + l.ToString());
    }
    else
    Console.WriteLine("Ma is hasznavehetetlen: " + l.ToString());
    }

    Itt is elsősorban az if(l.Versenyez("Négybalpata")) résztől homályos nekem.
    De még az előtte lévő f.FelrakjaAzÖsszesPénzét delegate rész sem tiszta.

    A segítségeteket előre is köszönöm! Szájbarágós magyarázatot előnyben részesítem :R

Új hozzászólás Aktív témák

Hirdetés