我遇到了一个有趣的情况,正在尝试理解。我在类中有一个只读结构体字段。这意味着当我引用它时,它引用的是副本而不是实际的字段,因此当我调用change方法时,它将使用副本进行操作,而原始值将保持不变。
但我观察到的情况并非如此。我只在静态字段上看到了预期的行为。我希望两种类型的字段都能表现出相同的行为。
但我观察到的情况并非如此。我只在静态字段上看到了预期的行为。我希望两种类型的字段都能表现出相同的行为。
private struct junk
{
public int i;
public void change()
{
i += 1;
}
}
private readonly junk jk;
private static readonly junk jk2;
public Form1()
{
InitializeComponent();
jk.change();
//jk.i is now 1, why? Shouldn't it be changing a copy and not the original jk?
jk2.change();
//jk2.i is 0
}
InitializeComponent()
无关的调用,并插入打印jk.i
和jk2.i
值的代码,并展示它们的输出结果。我们不关心你认为这些值是什么,我们想要看到这些值实际是什么。 - Mike Nakisstatic Form1()
以查看是否允许改变jk2的值。 - Hans Passant