我的代码如下所示。显然我不能写“Ok”,因为该对象已被处置。我不能返回 sw.Clone() 因为克隆不存在。如果我不使用 using 那么在 = new 和 return 之间的任何时候(比如迭代和写入对象,因为我的示例没有这样做)可能会出现异常,因此不会处理对象。
我是否要在 try 块之外定义 sw 并检查它是否为 null 然后在 catch 块中处理?这似乎有点过度的工作。有没有更好的办法?这是唯一的方法吗?
static void func1()
{
using (var sw = func2())
{
sw.WriteLine("Ok");
}
}
static StringWriter func2()
{
using (var sw = new StringWriter())
{
return sw;
}
}