我今天按照下面这个博客学习委托和事件,结果发现在main函数中变量a的属性值为什么会通过变量b和c来赋值呢?
我是想,因为类B和C中都自己定义了一个私有的变量a,当实例化的时候,应该也是各自内部的变量a被赋值,为什么结果是都把值赋到main函数的变量a中了?
是不是由于是引用类型的原因?大神能否从堆栈角度具体解释下,或者其他深层次的原因?
你那个a都是同一个对象咯。
这个地方就是个引用的问题嘛,引用对象在栈上就一个指针,指向堆上的数据。
比如 A a=new A(someReferenceObjectInstance);
B b=new B(someReferenceObjectInstance);
这个地方someReferenceObjectInstance是同一个对象,你不管是在a实例还是b实例中对这个对象操作也都是同一个。