注意:我很抱歉这个奇怪的标题,但我想不出更好的标题,请随意编辑。
所以我有一个关于在 C# 中使用 block 的非常简单的问题。我知道它的作用以及为什么要在 IO 和网络操作上使用它,但是我需要知道是否可以将它们分组,因为如果我有多个它们,那就太过分了。
所以基本上问题很简单:下面的这两个函数是否相同?或者我应该使用带有多级缩进的后者?
public static async Task ReadStuffUsingTogether()
{
using (var client = new HttpClient())
using (var response = await client.GetAsync("http://bigfile.com/file.csv", HttpCompletionOption.ResponseHeadersRead))
using (var fileStream = await response.Content.ReadAsStreamAsync())
using (var writeStream = File.Open("1.csv", FileMode.Create))
{
await fileStream.CopyToAsync(writeStream);
}
}
// Too much identation in my opinion
public static async Task ReadStuffUsing()
{
using (var client = new HttpClient())
{
using (var response = await client.GetAsync("http://bigfile.com/file.csv", HttpCompletionOption.ResponseHeadersRead))
{
using (var fileStream = await response.Content.ReadAsStreamAsync())
{
using (var writeStream = File.Open("1.csv", FileMode.Create))
{
await fileStream.CopyToAsync(writeStream);
}
}
}
}
}
最佳答案
嗯,其实是一样的。这里的规则与嵌套的“if”语句相同:
if(x)
if(y)
if(z) DoSomething();
或者:
if(x)
{
if(y)
{
if(z)
{
DoSomething();
.. some other code
}
}
}
两者之间的主要区别在于,使用大括号可以添加 block 代码,而没有 - 只有一行
关于c# - 组合 `using` 语句与一个一个地执行它们一样吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39657761/