Как описать в классе «Матрица» события, сигнализирующие о чем-либо? - C#

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

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

Здравствуйте. В лабораторной работе задание, согласно которому необходимо в классе "Марица" описать события сигнализирующие об изменении размеров или компонентов. Подскажите, пожалуйста, общий механизм, а то даже не знаю с чего начать "копать". С уважением, Владислав.

Решение задачи: «Как описать в классе «Матрица» события, сигнализирующие о чем-либо?»

textual
Листинг программы
  1. sealed class Matrix<T>
  2.     {
  3.         public event EventHandler<MatrixEventArgs> AccessElement;
  4.         public event EventHandler<MatrixEventArgs> ResizedMatrix;
  5.  
  6.         private T[] arr;
  7.         public int Length0 { get; private set; }
  8.         public int Length1 { get; private set; }
  9.         public Matrix(int length0,int length1)
  10.         {
  11.           arr=new T[length0*length1];
  12.             Length0 = length0;
  13.             Length1 = length1;
  14.         }
  15.  
  16.  
  17.         public T this[int index0,int index1]
  18.         {
  19.             get
  20.             {
  21.                 try
  22.                 {
  23.                     if (AccessElement != null)
  24.                         AccessElement(this, new MatrixEventArgs("Прочитан элемент", index0, index1));
  25.                     return arr[index0 * Length0 + index1];
  26.                 }
  27.                 catch (IndexOutOfRangeException e)
  28.                 {
  29.                     Console.WriteLine("Ошибка!Обращения по не верному индексу.");
  30.                     return default(T);
  31.                 }
  32.                
  33.             }
  34.             set
  35.             {
  36.                 try
  37.                 {
  38.                     if (AccessElement != null)
  39.                         AccessElement(this, new MatrixEventArgs("Записан элемент", index0, index1));
  40.                 arr[index0*Length0 + index1] = value;
  41.                  }
  42.                 catch (IndexOutOfRangeException e)
  43.                 {
  44.                     Console.WriteLine("Ошибка!Обращения по не верному индексу.");
  45.                 }
  46.  
  47.             }
  48.         }
  49.  
  50.         public void Resize(int length0, int length1)
  51.         {
  52.           Array.Resize(ref arr,length0*length1);
  53.             this.Length0 = length0;
  54.             this.Length1 = length1;
  55.             if (ResizedMatrix != null)
  56.                 ResizedMatrix(this, new MatrixEventArgs("Изменен размер матрицы!"));
  57.         }
  58.  
  59.        
  60.     }
  61.  
  62.     class MatrixEventArgs:EventArgs
  63.     {
  64.         public string Message { get; private set; }
  65.         public MatrixEventArgs(string s)
  66.         {
  67.             Message = s;
  68.         }
  69.  
  70.         public MatrixEventArgs(string s,int l0,int l1)
  71.         {
  72.             Message = s + string.Format("[{0},{1}]", l0, l1);
  73.         }
  74.     }

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы