Использование делегатов и событий при смене поля "телефон" объекта - C#

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

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

У меня есть некий класс

Person

, где есть такие поля, как

"Имя"

,

"Фамилия"

,

"Телефон"

. Также в другом классе

Database

есть методы, которые добавляют объекты класса Person в list, осуществляют поиск по имени, фамилии и телефону, возвращая либо список с подходящими объектами, либо сами объекты.

Вопрос

: как с помощью

событий и делегатов

изменить

телефон (phone)

найденного объекта? Где прописывать делегат и событие, в каком классе? Вот как это выглядит в Program:
 
var result = dataBase.SearchByPhone("8956535263"); // осуществление поиска по телефону, result - найденный объект
result.Phone = "8543242234"; //изменение телефона найденного объекта через свойства

Решение задачи: «Использование делегатов и событий при смене поля "телефон" объекта»

textual
Листинг программы
//Rextester.Program.Main is the entry point for your code. Don't change it.
//Compiler version 4.0.30319.17929 for Microsoft (R) .NET Framework 4.5
 
using System;
 
namespace Rextester
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var test=new Test();
            test.ChangeEvent+=(e)=>{
                Console.WriteLine("Элемент с индексом {0} был изменен",e);
            };
            
            var number=3;
            var find=test.Search(number);
            if(find==-1)
            {
                Console.WriteLine("Элемент не найден!");
                return;
            }
            else 
                Console.WriteLine("Элемент имеет индекс {0}",find);
            test.Print();
            
            
            Action<int,int> act=test.Do;
            act(find,777);
            test.Print();
            
           
        }
    }
    
    class Test
    {
        private int[]arr={1,2,3,4,5};
        
        public int Search(int element)
        {
            return Array.IndexOf(arr,element);
        }
        
       public  event Action<int> ChangeEvent;
        
        public void Do(int element,int value)
        {
            if(ChangeEvent!=null)
            {
                arr[element]=value;
                ChangeEvent(element);
            }
        }
        public void Print()
        {
            Console.WriteLine(string.Join(" ",arr));
        }
        
        
    }
}

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


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

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

5   голосов , оценка 3.2 из 5