我有以下代码.
baseclass bc = new derivedclass();
Run Code Online (Sandbox Code Playgroud)
在这种情况下是否会创建基类对象?如果是,GC将如何知道它正被使用(因为它没有指向它的任何变量)?GC如何处理这个问题?
编辑:当我设置bc = null时,将调用基类和派生类析构函数.如果没有创建基础对象,它如何调用基类析构函数?
如果没有基础对象,如何调用destuctor?这就是MSDN关于析构函数的说法:"析构函数用于破坏类的实例".
不,只创建派生类的实例.当然,这将包含基类的所有字段,但它不是一个单独的对象.什么都没有垃圾收集.
请注意,这bc只是一个变量,而不是一个对象.bc本身不需要进行垃圾收集 - 只是它可以防止变量的垃圾收集,如果它可能被再次读取,则该变量的值是指的.(如果没有任何内容可以bc再次读取,并且您没有在调试器下运行,则不会阻止对象被垃圾回收.)
| 归档时间: |
|
| 查看次数: |
102 次 |
| 最近记录: |