Написать код с использованием событий и делегатов - C#
Формулировка задачи:
Подскажите, как правильно реализовать следующую задачу:
Есть класс Man:
Есть класс Boss:
Ну и набросок самой программы:
Хочу, чтобы всякий раз после выполнения метода
public class Man { public Man(string _name) { Name = _name; Console.WriteLine("New Man was Born!"); } private string Name; private string DisplayName { get { return Name; } set { Name = value; } } public void RenameMan(string _newname) { DisplayName = _newname; } }
class Boss { private string Name; public Boss(string _name) { Name = _name; } public void SayWow() { Console.WriteLine("{0} say: WOW", Name); } }
Man Sasha = new Man("Sasha"); Boss MyBoss = new Boss("MyBoss"); Sasha.RenameMan("Masha"); Console.ReadKey();
RenameMan
(класса Man), экземпляр класса (все экземпляры)Boss
"говорил" "Wow!" (выполнялся методSayWow()
). Пожалуйста, научитеРешение задачи: «Написать код с использованием событий и делегатов»
textual
Листинг программы
//обьявим делегат, который ничего не возвращает и не принимает(в соответсвии с методом SatWot) чтобы сделать далее событие public delegate void Deleg(); public class Man { private string Name; public event Deleg SayW; //обьявляем событие private string DisplayName { get { return Name; } set { Name = value; } } public void RenameMan(string _newname) { DisplayName = _newname; //Если событие имеет ссылку на метод(это просто меры предосторожности) то тогда выводить следующие: if (SayW != null) { Console.WriteLine("{0}", SayW.Target.ToString()); SayW(); } } public Man(string _name) { Name = _name; Console.WriteLine("New Man was Born!"); } } class Boss { private string Name; public void SayWow() { Console.WriteLine("{0} say: WOW", Name); } public override string ToString() { return String.Format("Instance of class Boss have name is {0}", Name); //тут просто так переопределил метод ToString чтобы событие выбивало имя класса, это я так, для себя))) } public Boss(string _name) { Name = _name; } } class Program { static void Main(string[] args) { Man Sasha = new Man("Sasha"); Boss MyBoss = new Boss("MyBoss"); Sasha.SayW += MyBoss.SayWow;//подпись на событие, чтобы оно работало в методе Sasha.RenameMan("Masha"); Console.ReadKey(); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д