GC如何处理在以下两种场景中创建的对象?处理对象
1)
Private Function DoSomething() As Boolean
Return New DatabaseManager().Insert()
End Function
2)
Private Function DoSomething() As Boolean
Dim mngr As New DatabaseManager()
Return mngr.Insert()
End Function
在选项1,我不创建本地变量来保存对象的引用。在选项2中,我保留了局部变量中的引用。
什么选择更好,为什么? (如果有的话)
在IL级别,很有可能创建一个对象而不将其存储在局部变量中。该对象被返回到堆栈中,所以如果你只使用它一次,没有什么能够阻止编译器消除不必要的'stloc.0'和'ldloc.0'。 – cHao 2010-11-17 18:52:21
@ cHao,非常好的评论,点了。我会更新我的帖子。 – 2010-11-17 18:53:45