UsingC#中块的目的是什么?它与局部变量有何不同?
Using
如果该类型实现 IDisposable,它会自动释放该类型。
鉴于:
public class SomeDisposableType : IDisposable { ...implmentation details... }
这些是等价的:
SomeDisposableType t = new SomeDisposableType(); try { OperateOnType(t); } finally { if (t != null) { ((IDisposable)t).Dispose(); } } using (SomeDisposableType u = new SomeDisposableType()) { OperateOnType(u); }
第二个更容易阅读和维护。
从 C# 8 开始,有一种新的语法using可以使代码更具可读性:
using
using var x = new SomeDisposableType();
它没有自己的{ }块,使用的范围是从声明点到声明它的块的末尾。这意味着您可以避免以下内容:
{ }
string x = null; using(var someReader = ...) { x = someReader.Read(); }
并有这个:
using var someReader = ...; string x = someReader.Read();