C# 是否有可能提前处理对象?

C# 是否有可能提前处理对象?,c#,filestream,streamreader,C#,Filestream,Streamreader,fileStream对象在调用Close方法之前是否有可能被销毁,如下所示 FileStream fileStream = new FileStream(xxx); StreamReader txtReader = new StreamReader(fileStream); curLog = txtReader.ReadToEnd(); txtReader.Close(); fileStream.Close(); 不,在那之前不可能关门。我建议你这样使用 FileStream fileSt

fileStream对象在调用Close方法之前是否有可能被销毁,如下所示

FileStream fileStream = new FileStream(xxx);
StreamReader txtReader = new StreamReader(fileStream);

curLog = txtReader.ReadToEnd();

txtReader.Close();
fileStream.Close();

不,在那之前不可能关门。我建议你这样使用

FileStream fileStream = new FileStream(xxx);
using (StreamReader txtReader = new StreamReader(fileStream))
{
            curLog = txtReader.ReadToEnd();
}

不,在那之前不可能关门。我建议你这样使用

FileStream fileStream = new FileStream(xxx);
using (StreamReader txtReader = new StreamReader(fileStream))
{
            curLog = txtReader.ReadToEnd();
}
fileStream对象是否有可能被销毁 在调用Close方法之前,如下所示

FileStream fileStream = new FileStream(xxx);
StreamReader txtReader = new StreamReader(fileStream);

curLog = txtReader.ReadToEnd();

txtReader.Close();
fileStream.Close();
没有

但是你不应该写这样的代码。您应该始终在using语句中包装IDisposable资源,以确保即使引发异常也会释放它们,并且不会泄漏句柄

using (FileStream fileStream = new FileStream(xxx))
using (StreamReader txtReader = new StreamReader(fileStream))
{
    curLog = txtReader.ReadToEnd();
}
但是对于这个特定的例子,您可以简单地使用这个方法

fileStream对象是否有可能被销毁 在调用Close方法之前,如下所示

FileStream fileStream = new FileStream(xxx);
StreamReader txtReader = new StreamReader(fileStream);

curLog = txtReader.ReadToEnd();

txtReader.Close();
fileStream.Close();
没有

但是你不应该写这样的代码。您应该始终在using语句中包装IDisposable资源,以确保即使引发异常也会释放它们,并且不会泄漏句柄

using (FileStream fileStream = new FileStream(xxx))
using (StreamReader txtReader = new StreamReader(fileStream))
{
    curLog = txtReader.ReadToEnd();
}
但是对于这个特定的例子,您可以简单地使用这个方法


是的,txtReader.Close调用也会关闭文件流:否则,不会。那么这是一个bug吗?是否会引发异常?这完全是出于设计。没有抛出异常。不得不猜测这个问题的原因是非常烦人的。顺便说一句,@user3462253可以让你控制它是否关闭底层流本身,以防你需要这样的行为。是的,txtReader.Close调用也会关闭文件流:否则,不会。那么这是一个bug吗?是否会引发异常?这完全是出于设计。没有抛出异常。必须猜测这个问题的原因是非常令人厌烦的。顺便说一句,@user3462253请注意,它可以让您控制它是否关闭底层流本身,以防您需要这样的行为。确切地说,我只是添加了这个。确切地说,我只是添加了这个。由于StreamReader默认关闭底层流,您不需要外部使用。由于StreamReader默认关闭基础流,因此您不需要外部使用。