【发布时间】:2011-02-06 08:19:25
【问题描述】:
通过一个方法,我可以传递一个包含整数数组的结构,并更改数组中的值。我不确定我是否完全理解为什么我能做到这一点。有人可以解释一下为什么我可以更改存储在 int[] 中的值吗?
private void DoIt(){
SearchInfo a = new SearchInfo();
a.Index = 1;
a.Map = new int[] { 1 };
SearchInfo b = new SearchInfo();
b.Index = 1;
b.Map = new int[] { 1 };
ModifyA(a);
ModifyB(ref b);
Debug.Assert(a.Index == 1);
Debug.Assert(a.Map[0] == 1, "why did this change?");
Debug.Assert(b.Index == 99);
Debug.Assert(b.Map[0] == 99);
}
void ModifyA(SearchInfo a) {
a.Index = 99;
a.Map[0] = 99;
}
void ModifyB(ref SearchInfo b) {
b.Index = 99;
b.Map[0] = 99;
}
struct SearchInfo {
public int[] Map;
public int Index;
}
【问题讨论】:
标签: c# struct pass-by-reference