C# 8.0 使用声明

标签 c# c#-8.0

关闭。这个问题是opinion-based .它目前不接受答案。












想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.

去年关闭。




Improve this question




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

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

    } // dispose of variable t

    // 100 lines of code
}

一旦到达右大括号,变量 t被处置。使用 using 声明,场景有所不同:
private int SomeMethod()
{
    using var t = new StreamWriter("somefile.txt");

    // 100 lines of code
} // dispose of variable t

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

最佳答案

答案可以是不同的场景。

例如,在您的情况下,它可能是:

  • 该函数足够大,可以进行拆分。请记住,在考虑到单元测试的现代编程中,单元必须足够小,并且具有执行特定操作的功能。
  • 100 行将很快结束。如果是这种情况,那么可以使用新的更具可读性的定义。
  • 下面几行需要相同的资源。那为什么不使用同一个实例然后dispose呢?
  • 在其余的行中,会发生其他需要时间的事情。那么保持一个项目不被处理(比如一个流)是没有意义的,应该使用旧的方式。

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

    关于C# 8.0 使用声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60040535/

    相关文章:

    带有泛型参数的 C# 8.0 可为空引用类型功能

    c# - C# 8.0 中是否有针对非空的 "check and get"运算符?

    C# 从小于 1 的 double 值中删除前导零

    c# - 如何对多线程场景中只执行一次的代码进行单元测试?

    C# 2022 IDE - 没有关于代码样式或变量命名的警告?

    c# - 如何优化 linq 查询的速度?

    c# - 帮助将 SQL 转换为 LINQ-to-Entities

    c# - 使用 C#8.0 在 Visual Studio 中优化 switch case 后出现意外结果

    c# - 空合并赋值运算符的行为

    c# - 具有泛型返回类型的可空引用类型