public static AbstractMatrix <T> SumMatrix <T>(this TriangularMatrix <T> matrix, DiagonalMatrix <T> otherMatrix) { AbstractMatrix <T> newMatrix = new TriangularMatrix <T>(matrix.Size); Func <T, T, T> addMethod = CreateAdd <T>(); for (int i = 0; i < matrix.Size; i++) { newMatrix[i, i] = addMethod(matrix[i, i], otherMatrix[i, i]); } return(newMatrix); }
static void Main(string[] args) { AbstractMatrix <int> matrix = new SquareMatrix <int>(3); ListenersChangeMatrix <int> listener = new ListenersChangeMatrix <int>(matrix); matrix[0, 0] = 1; matrix[0, 1] = 2; matrix[0, 2] = 3; matrix[1, 0] = 4; matrix[1, 1] = 5; matrix[1, 2] = 6; matrix[2, 0] = 7; matrix[2, 1] = 8; matrix[2, 2] = 9; AbstractMatrix <int> matrix2 = new TriangularMatrix <int>(3); ListenersChangeMatrix <int> listener2 = new ListenersChangeMatrix <int>(matrix2); matrix2[0, 0] = 1; matrix2[1, 0] = 2; matrix2[1, 1] = 3; matrix2[2, 0] = 4; matrix2[2, 1] = 5; matrix2[2, 2] = 6; AbstractMatrix <int> matrix4 = new DiagonalMatrix <int>(3); ListenersChangeMatrix <int> listener3 = new ListenersChangeMatrix <int>(matrix4); matrix4[0, 0] = 1; matrix4[1, 1] = 2; matrix4[2, 2] = 3; AbstractMatrix <int> matrix3 = matrix4.SumMatrix(matrix4); for (int i = 0; i < matrix3.Size; i++) { for (int j = 0; j < matrix3.Size; j++) { Console.Write(" " + matrix3[i, j] + " "); } Console.WriteLine(); } }