y2k*_*y2k 3 .net c# vb.net using
我看到了这个:
using (StreamWriter sw = new StreamWriter("file.txt"))
{
// d0 w0rk s0n
}
Run Code Online (Sandbox Code Playgroud)
我尝试查找信息的所有内容都没有解释这是做什么的,而是给了我关于命名空间的东西.
Jon*_*eet 12
您想查看using语句的文档(而不是有关命名空间的using指令).
基本上它意味着块被转换为try/ finally块,并sw.Dispose()在finally块中被调用(具有适当的无效性检查).
您可以在任何处理类型实现的地方使用using语句IDisposable- 通常您应该将它用于您负责的任何一次性对象.
关于语法的几个有趣的部分:
您可以在一个语句中获取多个资源:
using (Stream input = File.OpenRead("input.txt"),
output = File.OpenWrite("output.txt"))
{
// Stuff
}
Run Code Online (Sandbox Code Playgroud)您不必分配给变量:
// For some suitable type returning a lock token etc
using (padlock.Acquire())
{
// Stuff
}
Run Code Online (Sandbox Code Playgroud)你可以不用括号嵌套它们; 方便避免缩进
using (TextReader reader = File.OpenText("input.txt"))
using (TextWriter writer = File.CreateText("output.txt"))
{
// Stuff
}
Run Code Online (Sandbox Code Playgroud)Jar*_*Par 10
using构造本质上是一个语法包装器,可以自动调用使用中对象上的dispose.例如,您的上述代码大致可转换为以下内容
StreamWriter sw = new StreamWriter("file.text");
try {
// do work
} finally {
if ( sw != null ) {
sw.Dispose();
}
}
Run Code Online (Sandbox Code Playgroud)
您的问题由规范的第8.13节回答.