析构函数何时在ASP.NET中调用C#类?
发布时间:2020-05-23 08:47:54 所属栏目:asp.Net 来源:互联网
导读:说,我有自己定义的C#类: public class MyClass{ public MyClass() { //Do the work } ~MyClass() { //Destructor }} 然后我从ASP.NET项目创建我的类的实例,如下所示: if(true){ MyClass c = new
|
说,我有自己定义的C#类: public class MyClass
{
public MyClass()
{
//Do the work
}
~MyClass()
{
//Destructor
}
}
然后我从ASP.NET项目创建我的类的实例,如下所示: if(true)
{
MyClass c = new MyClass();
//Do some work with 'c'
//Shouldn't destructor for 'c' be called here?
}
//Continue on
我希望在if范围的末尾调用析构函数,但它永远不会被调用.我错过了什么? 解决方法等价于C析构函数的是IDisposable和Dispose()方法,通常在using块中使用.见http://msdn.microsoft.com/en-us/library/system.idisposable.aspx 你所谓的析构函数更好地称为终结器. 以下是使用IDisposable的方法.请注意,不会自动调用Dispose();您可以做的最好的事情就是使用using会导致调用Dispose(),即使在使用块到达结尾之前有异常. public class MyClass: IDisposable
{
public MyClass()
{
//Do the work
}
public void Dispose()
{
// Clean stuff up.
}
}
然后你可以像这样使用它: using (MyClass c = new MyClass())
{
// Do some work with 'C'
// Even if there is an exception,c.Dispose() will be called before
// the 'using' block is exited.
}
如果需要,您可以自己显式调用.Dispose().唯一的用途是当执行因任何原因离开using块时自动调用.Dispose(). 有关详细信息,请参阅此处:http://msdn.microsoft.com/en-us/library/yh598w02%28v=vs.110%29.aspx 基本上,上面的使用块相当于: MyClass c = new MyClass();
try
{
// Do some work with 'C'
}
finally
{
if (c != null)
((IDisposable)c).Dispose();
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- asp.net-mvc – 服务层验证
- ASP.NET vs. Silverlight
- asp.net – 什么Request.Params [“key”]呢?
- 在ASP.NET中创建搜索功能
- asp.net-mvc-3 – 在IIS上运行时,ASP.NET Web应用
- asp.net – LINQ to SQL – 你的DataContext在哪
- asp.net-mvc – ActionLink MVC中的图像按钮
- asp.net-mvc – 如何使用html帮助器在asp.net mv
- asp.net-mvc – UnitOfWork in Action Filter似乎
- asp.net-mvc-3 – ASP.NET MVC3 Razor:没有@if或
热点阅读
