我正在编写以下代码。
static void Main(string[] args)
{
FileInfo fiobj = new FileInfo(@"e:\mohan.txt");
Console.Write("Name of file:"+ fiobj.Name);
using(StreamWriter sw = fiobj.AppendText())
{
sw.WriteLine("mohan!");
}
}
// code not working
static void Main(string[] args)
{
FileInfo fiobj = new FileInfo(@"e:\mohan.txt");
Console.Write("Name of file:"+ fiobj.Name);
StreamWriter sw = fiobj.AppendText();
sw.WriteLine("mohan!");
}
当我使用“using(){}”块时,我能够写入文件但是当我在不使用(){}块的情况下编写相同的代码时,我无法做到。 为什么这样? 据我所知,using(){}块指定对象的生命周期范围。 使用(){}阻止做一些花哨的事情,使它能够将数据写入文件。
答案 0 :(得分:6)
如果没有using
声明,则表示您未关闭StreamWriter
因此,StreamWriter保持打开状态,文件保持锁定状态。
答案 1 :(得分:5)
using
是在范围超出Disposed
区块时正确确保您的对象using
正确的简写。
您的代码相当于:
StreamWriter sw = fiobj.AppendText();
try
{
sw.WriteLine("mohan!");
}
finally
{
if (sw != null)
{
((IDisposable)sw).Dispose();
}
}
此代码已正确关闭并处理StreamWriter。没有它,它将保持锁定。