Even'ty - dziwne zachowanie

0

Witam

Jestem tu nowy i mam pewien problem. Napisałem program który powinien wywołać zdarzenie gdy wywołamy a.Info. W viusalu odplatając program krok po kroku do wyd i do MojEwent zostaje prawidłowo przypisana void. Lecz niestety gdy program wchodzi do a.Info Eventy te stają się null'em i nie mam zielonego pojęcia dlaczego. Oto kod

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace zadanie004zad8
{
public delegate void MojaD();

class A
{
public event MojaD MojEwent;
public event MojaD wyda;
public A()
{
Console.WriteLine("Tworze klase a");
}
public void Info()
{
Console.WriteLine("To jest klasa A");

if (MojEwent != null)
MojEwent();
wyda();
Console.WriteLine("Jest");
}
}

class B
{
// int licznik = 0;

public A v = new A();

public B()
{
Console.WriteLine("Utworzono B");
v.MojEwent += new MojaD(v_MojEwent);
v.wyda += new MojaD(v_wyda);

}

void v_wyda()
{
Console.WriteLine("42s");
}
void v_MojEwent()
{
//licznik++;
Console.WriteLine("cooooooos");
// Console.WriteLine("zaszlo zdarznie InfoEvent, wywolano funkcje Info klasy A, a licznik wynosi: {0}", licznik);
// Console.ReadLine();
}
}


class Program
{

static void Main(string[] args)
{

A a = new A();
B b = new B();




a.Info();
// a.Info();
// a.Info();

Console.ReadLine();
}
}
}

Wielkie dzięki za pomoc

0

Nie znam się za bardzo na C#, ale czy nie powinno byc?:

public void Info() {
    Console.WriteLine("To jest klasa A");

    if (MojEwent != null)
        MojEwent();
    if (wyda != null)
        wyda();
0

Jeśli do zdarzeń obiektu 'a' nie przypisałeś żadnych metod obsługi, to chyba jasne że nie ma się co odpalać.

Tworzysz obiekt klasy A i B, czyli odpalają się ich konstruktory.
Następnie odpalasz metodę info na obiekcie klasy A. Obiekt klasy A, który masz w klasie B, ma się nijak do tego utworzonego w Main.

0

@visembler, powinno tak być ale tu akurat nie ma to znaczenia. Specjalnie ten jeden event jest poza if'em.
@massther, wielkie dzięki za informację, nie jestem zbyt biegły z programowania, ale już wiem co w czym problem :)

0

Specjalnie ten jeden event jest poza if'em.

eeee? specjalnie uczysz się złych nawyków i pisania niepoprawnego kodu?

1 użytkowników online, w tym zalogowanych: 0, gości: 1