如果你遇到像这样嵌套使用语句/资源的C#代码:
这样替换是否安全?
上面的例子只是嵌套可释放资源的一个示例,如果使用不正确请谅解。我很好奇当您处理最外层的资源(在本例中为BinaryReader)时,它是否会递归地为您处理其子级,还是您需要使用单独的using语句显式地处理每个“层”?例如,如果您处理BinaryReader,它是否应该处理响应流,从而处理响应?考虑到上述最后一句话,我认为您实际上确实需要单独的using语句,因为无法保证包装器对象将处理内部对象。这样对吗?
using (var response = (HttpWebResponse)request.GetResponse())
{
using (var responseStream = response.GetResponseStream())
{
using (var reader = new BinaryReader(responseStream))
{
// do something with reader
}
}
}
这样替换是否安全?
using (var reader = new BinaryReader(((HttpWebResponse)request.GetResponse()).GetResponseStream()))
{
// do something with reader
}
上面的例子只是嵌套可释放资源的一个示例,如果使用不正确请谅解。我很好奇当您处理最外层的资源(在本例中为BinaryReader)时,它是否会递归地为您处理其子级,还是您需要使用单独的using语句显式地处理每个“层”?例如,如果您处理BinaryReader,它是否应该处理响应流,从而处理响应?考虑到上述最后一句话,我认为您实际上确实需要单独的using语句,因为无法保证包装器对象将处理内部对象。这样对吗?
using
语句中可选的花括号。 - slugster