例如
using (Stream ftpStream = ftpResponse.GetResponseStream()) // a
using (FileStream localFileStream = (new FileInfo(localFilePath)).Create()) // b
{
........do something
}
这两个语句a和b会按照我的顺序执行吗? 并以相同的顺序排列??
由于
答案 0 :(得分: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
}
它远不止于此。您的代码也等效(不同类型的localFileStream
除外):
using (Stream ftpStream = ..., localFileStream = ...)
{
...
}
答案 1 :(得分:2)
是。此语法只是嵌套using
语句的快捷方式或替代方法。您所做的只是省略第一个using
语句中的括号。它相当于:
using (Stream ftpStream = ftpResponse.GetResponseStream())
{
using (FileStream localFileStream = (new FileInfo(localFilePath)).Create())
{
//insert your code here
}
}