小编典典

什么是 C# Using 块,我为什么要使用它?

all

UsingC#中块的目的是什么?它与局部变量有何不同?


阅读 89

收藏
2022-04-19

共1个答案

小编典典

如果该类型实现 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 var x = new SomeDisposableType();

它没有自己的{ }块,使用的范围是从声明点到声明它的块的末尾。这意味着您可以避免以下内容:

string x = null;
using(var someReader = ...)
{
  x = someReader.Read();
}

并有这个:

using var someReader = ...;
string x = someReader.Read();
2022-04-19