Как описать в классе «Матрица» события, сигнализирующие о чем-либо? - C#
Формулировка задачи:
Здравствуйте.
В лабораторной работе задание, согласно которому необходимо в классе "Марица" описать события сигнализирующие об изменении размеров или компонентов.
Подскажите, пожалуйста, общий механизм, а то даже не знаю с чего начать "копать".
С уважением, Владислав.
Решение задачи: «Как описать в классе «Матрица» события, сигнализирующие о чем-либо?»
textual
Листинг программы
sealed class Matrix<T> { public event EventHandler<MatrixEventArgs> AccessElement; public event EventHandler<MatrixEventArgs> ResizedMatrix; private T[] arr; public int Length0 { get; private set; } public int Length1 { get; private set; } public Matrix(int length0,int length1) { arr=new T[length0*length1]; Length0 = length0; Length1 = length1; } public T this[int index0,int index1] { get { try { if (AccessElement != null) AccessElement(this, new MatrixEventArgs("Прочитан элемент", index0, index1)); return arr[index0 * Length0 + index1]; } catch (IndexOutOfRangeException e) { Console.WriteLine("Ошибка!Обращения по не верному индексу."); return default(T); } } set { try { if (AccessElement != null) AccessElement(this, new MatrixEventArgs("Записан элемент", index0, index1)); arr[index0*Length0 + index1] = value; } catch (IndexOutOfRangeException e) { Console.WriteLine("Ошибка!Обращения по не верному индексу."); } } } public void Resize(int length0, int length1) { Array.Resize(ref arr,length0*length1); this.Length0 = length0; this.Length1 = length1; if (ResizedMatrix != null) ResizedMatrix(this, new MatrixEventArgs("Изменен размер матрицы!")); } } class MatrixEventArgs:EventArgs { public string Message { get; private set; } public MatrixEventArgs(string s) { Message = s; } public MatrixEventArgs(string s,int l0,int l1) { Message = s + string.Format("[{0},{1}]", l0, l1); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д