接口变量指向存储的地址在哪里 - C#?

时间:2013-07-12 07:56:38

标签: c# .net clr

我想知道,在你从一个实现某个接口的对象转换到那个特定的接口之后,参考内容会去哪里? 这是一个例子:

  

MyClass mc = new MyClass();

MyClass实现了IIfc。所以,这是界面的转换:

IIfc ifc = (IIfc) mc;

ifc的内容保存在哪里,我知道是 在堆上,但是它是mc实例的一部分还是指向属于ifc的mc 方法的其他内存地址?

P.S:我看到很多人没有得到这个问题。 ifc指向的地址在哪里?它是在对象(mc)内还是在堆的其他位置?

2 个答案:

答案 0 :(得分:5)

对象保持原样。参考文献也是如此。

这就是为什么你可以把它扔回MyClass

IIfc ifc = (IIfc) mc;
MyClass mc2 = (MyClass) ifc;

答案 1 :(得分:0)

实际上IIfc ifc本身是一个引用,它位于当前执行胎面堆栈的int中,因此它不是mc的一部分。引用指向与mc相同的位置。