析构函数何时在ASP.NET中调用C#类?
发布时间:2020-12-15 19:00:20 所属栏目:asp.Net 来源:网络整理
导读:说,我有自己定义的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 destructo
说,我有自己定义的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 – 为什么TextBox中有ViewState?
- 如何在ASP.NET MVC中渲染HTML字符串?
- asp.net-membership – 使用SQL提供程序获取ASP.NET成员资格
- asp.net-mvc-4 – 如何在MVC 4中每3秒刷新一次局部视图?
- asp.net-mvc – 我的模型中名为Title的属性与我视图中的Vie
- 在asp.net中按日期对directoryinfo中的文件进行排序
- 使用ASP.NET会话状态服务器(而不是InProc)的优点和缺点?
- asp.net-mvc – 加载程序集时会发生什么?
- asp.net – HttpContext.Current.User!= HttpContext.User
- asp.net-mvc – Sitecore 7.5 MVC和HttpContext.Session.Ti
推荐文章
站长推荐
- .net – 如何获取客户端DotNetOpenAuth.OAuth2返
- ASP.NET:开始<%%>的'#'是什么意思?
- 如何杀死会话或会话ID(ASP.NET/C)
- 使用ASP.NET Web API 2.1配置依赖注入
- asp.net-mvc – 使用ViewModel的MVC 3动态表单
- asp.net – 防止加载MicrosoftAjaxWebForms.debu
- .net – WinInet如何确定缓存的内容和时间?
- asp.net-mvc – MVC 2 vs MVC 3自定义验证属性使
- asp.net – ASP反请求伪造,为什么黑客不会先获取
- asp.net-mvc – 多租户Razor页面
热点阅读