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

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


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

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

9   голосов , оценка 4.111 из 5
Похожие ответы