【发布时间】:2011-02-23 01:40:05
【问题描述】:
我的代码如下所示。显然我不能写“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;
}
}
【问题讨论】:
-
你真正的 func2 是否写入 StringWriter?
-
是的,func1也是如此
-
我最终从父函数传入 sw 并在一个地方使用了一个 try 块(但这是一个 dif 对象,而不是字符串编写器)
标签: .net exception clone idisposable stringwriter