鉴于以下代码,我应该只在foo
类中创建它时处置Bar
吗?或者,即使它被传递给构造函数,我是否应该始终处置foo
?我想我应该添加另一个私有变量来跟踪Bar
创建foo
或者是否传递给Bar( Foo foo )
构造函数,并且只处理{{1}它是由foo
构造函数创建的。
public Bar( string name )
答案 0 :(得分:2)
你的想法是正确的。
如果您从其他地方传递了Foo
的实例,并自行处理它,则可能会破坏仍在使用Foo
的代码。如果你创建了Foo
的实例但是没有丢弃它,那么你将会不必要地长时间地使用它所消耗的内存。
因此,您最好的选择是跟踪您是否自己创建了实例并将其丢弃(如果是这样)。 (您也可以允许调用者指定行为,如评论中所述。)
(或者,你可以不做任何事情,效率会更低,但至少不会破坏任何东西。唯一可能主动破坏的解决方案就是你处理的是从别处传来。)