【发布时间】:2009-11-06 15:10:16
【问题描述】:
以下代码打印(调用 MyMethod 时):
0
0
0
1
我希望它打印出来:
0
0
1
1
这是为什么?
代码:
private struct MyStruct
{
public MyInnerStruct innerStruct;
}
private struct MyInnerStruct
{
public int counter;
public void AddOne()
{
++counter;
}
}
public static void MyMethod()
{
MyStruct[] myStructs = new MyStruct[] { new MyStruct() };
foreach (var myStruct in myStructs)
{
MyStruct myStructCopy = myStruct;
Console.WriteLine(myStruct.innerStruct.counter);
Console.WriteLine(myStructCopy.innerStruct.counter);
myStruct.innerStruct.AddOne();
myStructCopy.innerStruct.AddOne();
Console.WriteLine(myStruct.innerStruct.counter);
Console.WriteLine(myStructCopy.innerStruct.counter);
}
}
【问题讨论】: