我将使其简单化。我有一个字符串编写器作为类成员,因此我不能使用using()。每当我调用某个函数时,我都希望有一个空的sw。我应该在sw上调用Dispose()并分配一个新对象吗?还是我应该做类似.close()的事情,并做其他事情来清空缓冲区?
最佳答案
我同意其他答复者的意见,即您应该查看设计,看看是否有真正的方法是使用类级字符串编写器。
但是,我不同意这一点。
使用类时,如果类型实现Dispose
,则您确实应该显式地或使用“using”来调用它。
在这种情况下,确实是StringWriter.Dispose
调用了TextWriter.Dispose
而不执行任何操作,但是我真的不建议“只是忽略它”。
继承和多态的全部要点是可以将这种类型换成派生类型。
您代码中的今天StringWriter
可能会被替换为明天的EvenBetterStringWriter
,而后者的Dispose
可能会更有意义。
如果它实现了Dispose
,并且使用了它,那么您应该认真考虑完成后调用dispose。
当您让这种特定的具体实现的内部指导您这样的设计时,这是很危险的。 StringWriter
类的作者显然是打算调用Dispose的,否则就不会出现。
关于.net - 我应该安排一名字符串作家吗?或以某种方式重复使用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2475228/