Использование делегатов и событий при смене поля "телефон" объекта - 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));
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д