假设我有一些已知的库来从 .xls 文件加载数据并返回一个 DataTable,其中填充了任何 excel 工作簿中第一张工作表中的数据。还有一个 Log 函数,可以在没有工作调试器的情况下打印出消息。
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 变量仍然为空?