【发布时间】:2011-06-26 22:02:19
【问题描述】:
在我的理解中,将一个结构的变量分配给另一个相同类型的变量会产生一个副本。但是这条规则似乎被打破了,如下图所示。你能解释一下为什么会这样吗?
using System;
namespace ReferenceInValue
{
class Inner
{
public int data;
public Inner(int data) { this.data = data; }
}
struct Outer
{
public Inner inner;
public Outer(int data) { this.inner = new Inner(data); }
}
class Program
{
static void Main(string[] args)
{
Outer p1 = new Outer(1);
Outer p2 = p1;
Console.WriteLine("p1:{0}, p2:{1}", p1.inner.data, p2.inner.data);
p1.inner.data = 2;
Console.WriteLine("p1:{0}, p2:{1}", p1.inner.data, p2.inner.data);
p2.inner.data = 3;
Console.WriteLine("p1:{0}, p2:{1}", p1.inner.data, p2.inner.data);
Console.ReadKey();
}
}
}
【问题讨论】:
-
(此评论将被删除)对于回答我问题的人,我稍后会回来投票和绿色复选标记。对不起。
标签: c# class struct value-type reference-type