DataRow.ItemArrayのgetは、配列のシャローコピーを戻してるっぽい

ふと DataRow.ItemArray を使った行コピーを行ったとき、コピー元とコピー先の内容が同じ配列でになるため、元の行の内容を変更したらコピー先の行まで変更されてしまうんじゃないかと思ったけれど、そんなことはなかったぜ。
どうも DataRow.ItemArray は内部的に持ってるデータ内容をそのまま戻すのではなく、毎回配列を新たに作って戻してるっぽい。

var oRow1 = oTbl.Rows[0];
var oRow2 = oTbl.Rows[1];

oRow1.ItemArray = oRow2.ItemArray;

Console.WriteLine(Convert.ToString(oRow1["col1"])); // a
Console.WriteLine(Convert.ToString(oRow2["col1"])); // a

oRow1["col1"] = "aaa";

Console.WriteLine(Convert.ToString(oRow1["col1"])); // aaa
Console.WriteLine(Convert.ToString(oRow2["col1"])); // a