我有来自网格的DataRow,我需要在一行中修改几列。所以我将所有列都放在Array中,并尝试修改它们,但它不能按我的意愿工作。我需要一个解释。
我的目标是在Array或某个集合中按特定顺序获取所有列,然后修改它们等等。我想我现在正在创建一些引用除了我的列以外的其他内容的新对象。也许我应该尝试在收藏中存储一些参考?使用ref应该是最佳选择吗?
DataRow dr = rows[i] as DataRow;
dr["size"] = 5000; // => size is 5000;
ChangeSize(dr); // => size is 6000;
private void ChangeSize(DataRow dataRow)
{
dataRow["size"] = 6000; // => size is 6000
Object[] arrayOfColumns= { dataRow["size"], ... };
arrayOfColumns[0] = 7000; // => won't change size...
}
答案 0 :(得分:1)
你只是更改数组中的值。您碰巧通过dataRow["size"]
对其进行初始化,但这并不意味着两者之间存在任何永久链接。
如果您需要将更改反映回DataRow
,我怀疑您应该采用其他方法来执行此操作:
private void CopyToDataRow(Object[] source, DataRow target)
{
target["size"] = source[0];
// etc
}
无论何时修改数组都没有触发自定义代码的概念 - 您需要在适当的时候调用它。 (不,ref
根本不会帮助你。)
答案 1 :(得分:1)
dataRow [“size”]包含一个int值,它是一个值类型。
当您对arrayOfColumns进行实例化和初始化时,您将获得dataRow [“size”]中包含的值的副本,而不是引用。