grj*_*jj3 0 c# pointers reference
看一下下面的例子:
public void inc(int num) {
num++;
}
int a = 5;
inc(a);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,inc不会增加a变量本身.它没有指向内存中的相同位置.为了改变a,我将不得不使用ref.
但是,在这个例子中
public static void ExportSelectedRow(GridView gridView, object toObject, int skipCols)
{
GridViewRow gridViewRow = gridView.SelectedRow;
if (toObject is DataTable)
{
DataTable returnDt = (DataTable)toObject;
GridViewColsToDatatable(gridView, returnDt, skipCols);
DataRow dr = returnDt.NewRow();
for (int i = skipCols; i < gridViewRow.Cells.Count; i++)
dr[i - skipCols] = gridViewRow.Cells[i].Text;
returnDt.Rows.Add(dr);
}
}
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) {
DataTable dt = new DataTable();
GridViewHelper.ExportSelectedRow(GridView1, dt, 1);
...
}
Run Code Online (Sandbox Code Playgroud)
虽然我甚GridView1至DataTable没有在函数中引用它,但所选行将从中导出.所以toObject会更新.看起来
DataTable returnDt = (DataTable)toObject;
Run Code Online (Sandbox Code Playgroud)
实际上是引用了toObject.所以我的问题,为什么在这个例子中它是一个参考,但在第一个,它不是?
har*_*old 12
与其他人要说的相反,默认情况下,C#中的所有内容(也是引用类型)都是按值传递的.随着ref还是out他们不是.
但是在引用类型的情况下,通过值传递的东西是引用.
int当然是值类型,DataTable是引用类型.
| 归档时间: |
|
| 查看次数: |
886 次 |
| 最近记录: |