Как описать в классе «Матрица» события, сигнализирующие о чем-либо? - 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);
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д