部署streamreader是否关闭流?
我正在向要发送的方法发送流,在这些方法中,我使用的是二进制读取器/
wrtier。当读取器/写入器被处置时,或者被using
引用时或刚被引用时,流是否也被关闭?
我会发送BinaryReader /
Writer,但我也使用StreamReader(也许我应该解决这个问题。我仅将其用于GetLine和ReadLine)。如果每次关闭写入器/读取器时都关闭流,这将很麻烦。
回答:
是的,StreamReader
,StreamWriter
,BinaryReader
和BinaryWriter
所有关闭/处置其底层流时,你叫Dispose
他们。如果读取器/写入器只是垃圾回收,则它们
不会 处理流-您应该始终处理读取器/写入器,最好使用using
语句。(实际上,这些类都不具有终结器,也不应该具有终结器。)
就个人而言,我也希望对流也具有using语句。您可以using
整齐地嵌套语句而无需大括号:
using (Stream stream = ...)using (StreamReader reader = new StreamReader(stream, Encoding.Whatever))
{
}
即使using
该流的语句有点多余(除非StreamReader
构造函数抛出异常),我还是将其视为最佳实践,因为如果您删除了StreamReader
并在以后直接使用该流,则您将已经得到了正确的处理语义。
以上是 部署streamreader是否关闭流? 的全部内容, 来源链接: utcz.com/qa/409705.html