更改方法
问题描述:
中的数组值我遇到了一些我无法理解的奇怪行为,不知道有人能帮助我理解它。
的follwing方法收到
一个对象数组,并在阵列成员的一些变化更改方法
public static void adjustRow(object[] row, String column)
{
Double price ,units ,invest;
if (!(Double.TryParse(row[3].ToString(),out price)
& Double.TryParse(row[4].ToString(),out units)
& Double.TryParse(row[5].ToString(),out invest)))
return ;
switch (column)
{
case INVEST: row[4] = Math.Round(invest/price,2); break;
case UNITS:
case PRICE: row[5] = Math.Round(units * price,2); break;
}
}
的follwing方法调用上述方法:
void editGrids_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
DataGridView gridView = sender as DataGridView;
DataTable source= null;
if (gridView != null)source = gridView.DataSource as DataTable;
if (source != null)
Systm.adjustRow(source.Rows[e.RowIndex].ItemArray,gridView.Columns [e.ColumnIndex].HeaderText);
}
我预期输入数组中的值将是在第一个方法范围外改变,但实际结果是值保持不变,任何解释?
谢谢叶兰
答
任何解释
当然,我能想到很多解释的。
1)gridView为null。
2)gridView.DataSource不是调用的TryParse被返回false的一个DataTable
3)一个。 (注意:您可能打算使用& &,而不是&。)
4)列不符合INVEST,UNITS或PRICE。
5)写入数组的值与已经存在的值相同。
以上任何一种都可以解释你的观察。
你能解释一下为什么吗?数组没有引用他保存的值? 我描述的行为并不适合示例4在你的链接和冲突我不明白 – Eran 2010-01-16 15:35:36
除非我错过了什么,你给的链接说,Eran的代码*应该*改变数组。 – sepp2k 2010-01-16 15:41:27