.xls ファイルからデータをロードする既知のライブラリがあり、Excel ワークブックの最初のシートのデータが入力された DataTable を返すとします。また、デバッガーが動作していないときにメッセージを出力するログ機能。
DataTable dtFoo = null;
DataTable dtBar = null;
DataTable dtChaz = null;
String[] files = new String[]{ "file1.xls", "file2.xls", "file2.xls" };
DataTable[] dts = new DataTable[] { dtFoo, dtBar, dtChaz };
for(int i = 0; i < 3; i++)
{
dts[i] = SomeLibrary.LoadFromFile(files[i]); //Returns a new DataTable
Log((dts[i] == null) + " " + dts[i].Rows.Count)
}
Log((dts[0] == null) + " " + (dtFoo == null));
Log((dts[1] == null) + " " + (dtBar == null));
Log((dts[2] == null) + " " + (dtChaz == null));
Log Output:
False 40
False 455
False 34
False True
False True
False True
明らかに、参照型変数を操作するときに、理解できなかった重要な何かが欠けています。ループが完了した後でも DataTable 変数が null のままなのはなぜですか?