public SquareMatrix(int length)
 {
     this.matrix = new T[length * length];
     Length      = length;
     mce         = new MatrixChangeEvent();
     mce.Change += SomeAction;
 }
        public SymmetricMatrix(int length)
        {
            Length = length;
            int size = 0;

            for (int i = 1; i <= Length; ++i)
            {
                size += i;
            }
            this.matrix = new T[size];
            mce         = new MatrixChangeEvent();
            mce.Change += SomeAction;
        }
 public SymmetricMatrix(T[] matrix)
 {
     if (matrix == null)
     {
         throw new ArgumentNullException();
     }
     if (!CheckMatrix(matrix.Length))
     {
         throw new ArgumentException("This matrix is not symmetric.");
     }
     this.matrix = new T[matrix.Length];
     Array.Copy(matrix, this.matrix, matrix.Length);
     mce         = new MatrixChangeEvent();
     mce.Change += SomeAction;
 }