bin*_*all 8 c# using-statement
通常我做的就是这样(只是一个例子):
using (Stream xmlStream = client.OpenRead(xmlUrl))
{
using (XmlTextReader xmlReader = new XmlTextReader(xmlStream))
{
}
}
Run Code Online (Sandbox Code Playgroud)
不仅仅是做得更好:
using (XmlTextReader xmlReader = new XmlTextReader(client.OpenRead(xmlUrl)))
{
}
Run Code Online (Sandbox Code Playgroud)
但是我不确定在这个简短的语法中是否所有资源都将被处理(流)或只有XmlTextReader?
提前感谢您的回答.
Mar*_*ell 21
没有; Stream如果XmlTextReader构造函数抛出异常,则不能保证处理它.但你可以这样做:
using (Stream xmlStream = client.OpenRead(xmlUrl))
using (XmlTextReader xmlReader = new XmlTextReader(xmlStream))
{
// use xmlReader
}
Run Code Online (Sandbox Code Playgroud)
使用 C# 8,您甚至可以摆脱单个嵌套级别:
private static void NewMultipleUsingDeclarations()
{
using var xmlStream = client.OpenRead(xmlUrl);
using var xmlReader = new XmlTextReader(xmlStream);
// use xmlReader
}
Run Code Online (Sandbox Code Playgroud)
在内部,编译器创建一个与缩进版本等效的 try catch,并在 using 变量范围的末尾(在本例中,在方法的末尾)处理流和读取器。
查看更多:
| 归档时间: |
|
| 查看次数: |
1387 次 |
| 最近记录: |