我知道当您有以下代码时,会在 StreamReader 对象上调用 Dispose() 方法:
//Sample 1
using (StreamReader sr1 = new StreamReader(@"C:\Data.txt"))
{
string s1 = sr1.ReadToEnd();
//Do something with s1...
}
但是如果您编写这样的代码(示例 2),Dispose() 方法是否也会被调用?
//Sample 2
StreamReader sr2 = new StreamReader(@"C:\Data.txt");
using (sr2)
{
string s2 = sr2.ReadToEnd();
//Do something with s2...
}
最佳答案
是的,Dispose()
将在两个示例中调用。它们在功能上是等效的,除了在第二个示例中,已处置的 StreamReader
仍会在范围内。因此,首选第一种方法,因为使用已处置对象通常是一个坏主意。
然而,正如其他人所指出的,有时可以使用已处置的对象。在这种情况下,您可能想使用第二个示例。但你必须知道自己在做什么,我会尽可能避免这样做。
关于C# 处理对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3944734/