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