dyl*_*ert 1 c# destructor reference object
使用C#.
我有一个MainFoo类:
class MainFoo
{
private Foo foo;
public MainFoo()
{
this.foo = new Foo();
}
public CreateNewFoo()
{
this.foo = new Foo();
}
public DoCurrentFoo()
{
this.foo.Do();
}
}
Run Code Online (Sandbox Code Playgroud)
一个Foo类:
class Foo
{
~Foo()
{
this.DoEnd();
}
public void Do() {}
private void DoEnd() {}
}
Run Code Online (Sandbox Code Playgroud)
我希望能够DoEnd() 在每次private Foo;重新初始化时调用Foo类中的方法.这个方法DoEnd()是私有的,我想保持这种方式(因此无法访问MainFoo).
由于同样的Foo get再次初始化,我虽然实例会松开它的引用,所以它会调用析构函数.但只有在MainFoo实例丢失引用时才会调用此方法.
问题:丢失引用时如何处置对象实例?
不保证在任何特定时间调用析构函数,甚至根本不调用析构函数.通常,您不应该依赖析构函数并且应该实现IDisposable并自己调用Dispose.
最方便的是,这可以完成using(...){ }.
回到你的样本,你也可以在财产分配上处理对象(如Jason Watkins建议的那样),但要确保它不会在其他任何地方使用.
public Foo F
{
get{return foo;}
set
{
if( foo != null)
foo.Dispose();
foo = value;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
498 次 |
| 最近记录: |