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

joj*_*ojo 2 c# dispose using using-statement

例如

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

两个陈述a和b会按照我的顺序执行吗?并按顺序排列?

谢谢

Jon*_*eet 10

它们将以文本顺序执行,并以相反的顺序处理 - 因此localFileSream将首先处理ftpStream.

基本上你的代码相当于:

using (Stream ftpStream = ...)
{
    using (FileStream localFileStream = ...)
    {
        // localFileStream will be disposed when leaving this block
    }
    // ftpStream will be disposed when leaving this block
}
Run Code Online (Sandbox Code Playgroud)

它比这更进一步.您的代码也是等效的(不同的类型localFileStream):

using (Stream ftpStream = ..., localFileStream = ...)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)