Когда есть многопользовательские операторы, они будут выполнены по порядку?

Например

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

выполнятся ли два оператора a и b в порядке, который я положил? и выкладывать в том же порядке??

Спасибо

2 ответа

Решение

Они будут выполнены в текстовом порядке и расположены в обратном порядке - так 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 = ...)
{
    ...
}

Да. Этот синтаксис является просто ярлыком или альтернативным способом вложения using заявления. Все, что вы делаете, это опуская скобки на первом using заявление. Это эквивалентно:

using (Stream ftpStream = ftpResponse.GetResponseStream())
{
    using (FileStream localFileStream = (new FileInfo(localFilePath)).Create())
    {
        //insert your code here
    }
}
Другие вопросы по тегам