C# 为什么修改对象数组不';我不能改变我的物品吗?
我有网格中的DataRow,我需要修改一行中的几列。所以我把我所有的列都放在数组中,并试图修改它们,但并没有如我所愿。我需要一个解释 我的目标是在数组或某个集合中按特定顺序获取所有列,然后修改它们等等。我想我现在正在创建一些新对象,这些对象引用的不是我的列。也许我应该试着在收藏中储存一些参考资料?使用ref应该是最好的选择吗C# 为什么修改对象数组不';我不能改变我的物品吗?,c#,arrays,C#,Arrays,我有网格中的DataRow,我需要修改一行中的几列。所以我把我所有的列都放在数组中,并试图修改它们,但并没有如我所愿。我需要一个解释 我的目标是在数组或某个集合中按特定顺序获取所有列,然后修改它们等等。我想我现在正在创建一些新对象,这些对象引用的不是我的列。也许我应该试着在收藏中储存一些参考资料?使用ref应该是最好的选择吗 DataRow dr = rows[i] as DataRow; dr["size"] = 5000; // => size is 5000; ChangeSize(
DataRow dr = rows[i] as DataRow;
dr["size"] = 5000; // => size is 5000;
ChangeSize(dr); // => size is 6000;
可变尺寸车身
您只是在更改数组中的值。您碰巧通过dataRow[“size”]
初始化了它,但这并不意味着两者之间存在任何永久的联系
如果您需要将更改反映回数据行
,我想您应该有另一种方法:
private void CopyToDataRow(Object[] source, DataRow target)
{
target["size"] = source[0];
// etc
}
没有在修改数组时触发这样的自定义代码的概念-您需要在适当的时间调用它。(不,ref
在这里对您毫无帮助。)dataRow[“size”]包含一个值类型的int
实例化和初始化arrayOfColumns时,会得到dataRow[“size”]中包含的值的副本,而不是引用。是否有方法使用该对象的引用初始化数组?或者我应该像Jon Skeet在下面写的那样复制值?在这种情况下,您不能使用ref。正如Jon Skeet注意到的,您应该使用额外的方法来更新值。我在应用程序中使用该方法。很高兴听到裁判不帮忙。
private void CopyToDataRow(Object[] source, DataRow target)
{
target["size"] = source[0];
// etc
}