Когда есть многопользовательские операторы, они будут выполнены по порядку?
Например
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
}
}