我将使其简单化。我有一个字符串编写器作为类成员,因此我不能使用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/

10-13 08:15