日期:2014-05-18  浏览次数:20883 次

关于DataTable的问题。
有以下代码:
C# code
DataTable dt=…… 从数据库读取的DataTable
OverrideSmartGridData(dt);


然后我在OverrideSmartGridData方法中重新给dt赋值
protected override void OverrideSmartGridData(DataTable dt)
{
  dt = ChangeData();
}

再回到OverrideSmartGridData(dt)这行代码的时候,dt的值没有发生任何改变,还是从数据库中读取到的datatable.
再如果我改写一下OverrideSmartGridData方法,如下:
protected override void OverrideSmartGridData(DataTable dt)
{
  dt.Clear();
}
再回到OverrideSmartGridData(dt)这行代码的时候,发现dt的值有被清空了。

请问这是怎么回事呢?我都是在
protected override void OverrideSmartGridData(DataTable dt)
{
}
中操作的,怎么会有两个不同的结果?

------解决方案--------------------
DataTable dt,这样的参数,你可以操作dt内部的方法等,但是你不能改变dt的指向
ref DataTable dt,这样可以改变dt的指向