Как создать двумерный динамический массив в c#?
Самое простое: List<List<your_data_type>>
Напишите свою реализацию назовите её Matrix, а под капотом используйте обычным двумерным массивом или вложенные списки, реализуйте методы для добавления/удаление строк/столбцов. Это несложно. В качестве основы можете взять вот этот код www.cyberforum.ru/post1250887.html там описана базовая логика, все остальное можете сами написать ))