ふと 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