C# 8.0 使用声明

Man*_*ark 5 c# c#-8.0

在 C# 8.0 中,我们现在可以在 C# 8.0 中使用using 声明。他们真的是个好主意吗?考虑这个 using 语句:

private int SomeMethod()
{
    using (var t = new StreamWriter("somefile.txt"))
    {

    } // dispose of variable t

    // 100 lines of code
}
Run Code Online (Sandbox Code Playgroud)

一旦到达右大括号,变量t就被处理掉。使用 using 声明,场景有所不同:

private int SomeMethod()
{
    using var t = new StreamWriter("somefile.txt");

    // 100 lines of code
} // dispose of variable t
Run Code Online (Sandbox Code Playgroud)

该变量t仅在方法结束时处理。使用语句对我来说似乎更有效,因为您只能在需要时保持对象“存活”。

Ath*_*ras 1

答案可以有多种,有多种不同的场景。

例如,就您而言,它可以是:

  1. 该函数足够大,因此拆分是有意义的。请记住,在考虑到单元测试的现代编程中,单元必须足够小并且函数必须足够小以执行特定的操作。

  2. 100 行很快就会结束。如果是这样的话,那么使用新的更具可读性的定义就可以了。

  3. 下面几行需要相同的资源。那为什么不使用同一个实例然后处置呢?

  4. 在其余的行中,发生了一些需要时间的事情。那么保持一个项目不被处理(比如 Stream)是没有意义的,应该使用旧的方法。

这份名单可以继续使用。没有一个解决方案适合所有示例,但在大多数情况下,我认为第一个解决方案适用。