一、IDisposable的需求和作用
IDisposable没有任何实际作用。
public interface IDisposable
{
void Dispose();
}
IDisposable是一个规范,是一个约定,如果一个class继承了IDisposable,实现了Dispose()方法,那么开发者就约定好将所有释放资源的代码写在这里,重点,调用的时机也是由开发者调用,IDisposable只是一个约定。
举例:
namespace _02_Scripts.Ads
{
public class MainClass
{
private IDisposableTest disposableTest = null;
public MainClass()
{
IDisposableTest disposableTest = new IDisposableTest();
disposableTest.创建角色();
}
public void 清理()
{
disposableTest.Dispose();
}
}
public class IDisposableTest : IDisposable
{
public GameObject 游戏生成的角色;
public void 创建角色()
{
游戏生成的角色 = new GameObject();
}
// 实现 Dispose方法
public void Dispose()
{
游戏生成的角色 = null;
}
}
}
二、用与不用IDisposable的区别
上面的代码如果不用IDisposable会是什么样?
public class IDisposableTest
{
public GameObject 游戏生成的角色;
public void 创建角色()
{
游戏生成的角色 = new GameObject();
}
// 没有继承接口,那么我自己实现一个方法供外部调用
public void MyDispose()
{
游戏生成的角色 = null;
}
}
调用方代码变成:
public void 清理()
{
disposableTest.MyDispose();
}
看上去没有任何区别。
但是当我们这样的类有成百上千之后,就无法保证,每个类中释放资源的方法名称都叫MyDispose,可能会叫ADispose,BDispose,这让项目陷入混乱。
接口约定了方法,这体现出 接口最核心的作用之一:行为约束(行为契约 / Contract)。
1319

被折叠的 条评论
为什么被折叠?



