C# IDisposable接口的使用
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.Data;
namespace DisposeDemo
{
class Program
{
static void Main(string[] args)
{
PersonWrapper pw = new PersonWrapper();
pw.Dispose();
Console.WriteLine(pw.p == null);
Console.Read();
}
}
public class PersonWrapper:IDisposable
{
public Person p = new Person() { Name = "abc" };
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
private bool disposed = false;
protected virtual void Dispose(bool disposing)
{
// Check to see if Dispose has already been called.
if (!this.disposed)
{
// If disposing equals true, dispose all managed
// and unmanaged resources.
if (disposing)
{
p = null;
// Dispose managed resources (like other .NET components)
}
// Dispose UNMANAGED resources (like P/Invoke functions)
GC.Collect();
GC.WaitForPendingFinalizers();
}
disposed = true;
}
}
public class Person
{
public string Name { get; set; }
}
}
最新文章
- Java Annotation 注解
- C#微信公众号开发系列教程六(被动回复与上传下载多媒体文件)
- Java 设计模式泛谈&;装饰者模式和单例模式
- “康园圈--互联网+校园平台“项目之Sprint3
- onethink 系统函数中 生成随机加密key
- Hibernate Dialect must be explicitly set
- gradle多模块开发(转)
- iOS下JS与OC互相调用(四)--JavaScriptCore
- .net mvc session失效问题
- Go调试工具—— Delve
- Java 之 XML
- 洛谷P3722 影魔 [AH2017/HNOI2017] 线段树+扫描线
- ORM数据库框架 SQLite ORMLite MD
- 【delphi】delphi出现‘尚未调用CoInitialize’异常
- 解决方案~Microsoft Security Client OOBE 程序错误
- python 简单爬虫(beatifulsoup)
- Linux高频指令总结
- [LintCode] 全排列
- 关系型数据库设计——E-R图
- Linux重定向: >; 和 &;>; 区别