Написать код с использованием событий и делегатов - C#

Узнай цену своей работы

Формулировка задачи:

Подскажите, как правильно реализовать следующую задачу: Есть класс Man:
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;
        }

    }
Есть класс Boss:
    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();
        }
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.1 из 5
Похожие ответы