其中是接口变量指向存储的-C#的地址

本文关键字:存储 -C# 地址 接口 变量 | 更新日期: 2023-09-27 18:22:01

我想知道,在您从实现某个接口的某个对象转换到该特定接口后,引用内容会去哪里?这里有一个例子:

MyClass mc=新MyClass();

MyClass实现IIfc。所以,这里是铸造到接口:

IIfc ifc = (IIfc) mc;

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

附言:我看到很多人都不明白这个问题。ifc指向的地址在哪里?它是在对象(mc)内部还是在堆的其他位置

其中是接口变量指向存储的-C#的地址

对象保持原样。参考也停留在原来的位置。

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

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

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