c# - 当有多个using语句时,它们会按顺序执行吗?

标签 c# dispose using using-statement

例如

  using (Stream ftpStream = ftpResponse.GetResponseStream())       // a             
  using (FileStream localFileStream = (new FileInfo(localFilePath)).Create()) // b
  {
                 ........do something
  }

a和b两条语句会按照我放的顺序执行吗? 并以相同的顺序展开??

谢谢

最佳答案

它们将按文本顺序执行,并以相反顺序处理 - 因此 localFileSream 将首先处理,然后是 ftpStream

基本上你的代码等同于:

using (Stream ftpStream = ...)
{
    using (FileStream localFileStream = ...)
    {
        // localFileStream will be disposed when leaving this block
    }
    // ftpStream will be disposed when leaving this block
}

但它远不止于此。您的代码等效于此(撇开不同类型的 localFileStream):

using (Stream ftpStream = ..., localFileStream = ...)
{
    ...
}

关于c# - 当有多个using语句时,它们会按顺序执行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4264034/

相关文章:

c# - 加载 View 状态失败。仅在 IE 中出现错误

java - Selenium 中的 dispose() 错误

c# - 在 C# 中将日期和时间字符串转换为 DateTime

c# - Entity Framework 中的 StoreGeneratedPattern

c# - 自动化 Microsoft Word 时的 RPC_E_SERVERFAULT

c# - 在不使用语句的情况下使用 Entity Framework 的缺点?

c++ - 使用 <name> = ... 不命名类型

c# - 使用 Entity Framework 的 Repository 和 Unit Work 模式正确处理?

wpf - 何时释放 UserControl 事件处理程序?

c++ - 计算用户使用循环输入的整数数量