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

Ant*_*Tun 0 .net c# clr

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

MyClass mc = new MyClass();

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

IIfc ifc = (IIfc) mc;
Run Code Online (Sandbox Code Playgroud)

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

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

Mar*_*zek 5

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

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

IIfc ifc = (IIfc) mc;
MyClass mc2 = (MyClass) ifc;
Run Code Online (Sandbox Code Playgroud)

  • 它不是*在mc*内.这是`mc`地址. (2认同)