Может и можно, но это как-то некрасиво, если нужно делать много раз. Например, в программе тестирования, когда многократно требуются наборы массивов с разными размерами и содержимым. Я помню, конечно, про автоматическую сборку мусора, но хорошо ли так активно его плодить?
Т.е. если Вы, как Разработчик, поощряете подобный стиль программирования, буду его использовать:
begin
var a:=new integer[3,3] ((1,2,3), (4,5,6), (7,8,9));
a.Println(2); Writeln;
a:=new integer[2,4] ((1,2,3,4),(5,6,7,8));
a.Println(2); Writeln;
a:=new integer[3,2] ((1,2),(3,4),(5,6));
a.Println(2)
end.
А с другой стороны, ведь когда пишется что-то типа [quote=“RAlex, post:253, topic:143”] a:=MatrGen(2,4,(i,j)->Arr(1,2,3,4,5,6,7,8)[4*i+j]); [/quote]
все равно фактически происходит то же самое: создается новый массив и старая ссылка на прежний массив утрачивается, попадая в объятия к сборщику мусора.