using IDisposable
using和IDisposable是组合使用的,像这种一个关键字和一个接口的组合,在C#中很少见的,using这个关键字,也就因为IDisposable多了一个身份。
其实很多人都知道IDisposable,有一个方法void Dispose(),通常是用来释放一些必须释放的资源时,要实现这个接口,这样,就可以在使用using后,调起这个Dispose()。
之前,在使用using时,需要给using一个使用范围,现在推荐不使用范围,那接下来看看有什么区别。
实现IDisposable接口的类:
class Test : IDisposable
{
private readonly string _name;
public Test(string name)
{
_name = name;
}
public void Dispose()
{
WriteLine($"{_name} Dispose");
}
public void CallMethod_1()
{
WriteLine("CallMethod_1");
}
}
之前的用法,"1 end"在"1 Dispose"的后面,这个很好理解,因为using下面有一个{}范围。
void Call01()
{
using (var test = new Test("1"))
{
test.CallMethod_1();
}
WriteLine("1 end");
}
现在可以使用的用法,"2 end"始终在"2 Dispose"的前面,即使我们在WiteLine("2 end")前面调用test.Dispose(),也会在Call02方法结束后再调一次Dispose。
void Call02()
{
using var test = new Test("2");
test.CallMethod_1();
WriteLine("2 end");
}
就按开始的说法,如果Dispose是释放一些资源,有些资源不能释放多次,这个时候就要注意了,不能多次调用Dispose(),所以即然用了using,就不用关注Dispose()了。
想要更快更方便的了解相关知识,可以关注微信公众号
****欢迎关注我的asp.net core系统课程****
《asp.net core精要讲解》 https://ke.qq.com/course/265696
《asp.net core 3.0》 https://ke.qq.com/course/437517
《asp.net core项目实战》 https://ke.qq.com/course/291868
《基于.net core微服务》 https://ke.qq.com/course/299524
《asp.net core精要讲解》 https://ke.qq.com/course/265696
《asp.net core 3.0》 https://ke.qq.com/course/437517
《asp.net core项目实战》 https://ke.qq.com/course/291868
《基于.net core微服务》 https://ke.qq.com/course/299524