对所有非原始对象使用“使用”是否有任何缺点?

时间:2012-01-20 14:11:49

标签: c# coding-style using

我确定那里有答案......但是在Google搜索" C#使用"比你想象的要复杂一点。

无论如何......前几天真正开始学习这种方便的技术,似乎我不会将它用于我的代码中的任何非原始对象。

这是一个相当准确的陈述还是有一些缺点(在稍微混乱的代码之外)使用"使用"对于几乎所有的东西?

2 个答案:

答案 0 :(得分:5)

目前尚不清楚您的意思 - 如果您的意思是使用以下语句:

using (SomeType x = new SomeType())
{
}

然后适用于IDisposable实施。

如果您的意思是使用指令,请执行以下操作:

using System.IO;

然后是的,我通常对每个包含我希望在特定源文件中使用的类型的命名空间有一个指令。

答案 1 :(得分:2)

正如其他人所提到的,您只能对实现using的类型使用IDisposable语句。对于实现IDisposable的类型,我看到的唯一真正的缺点是由于using隐式调用类型的Dispose()方法,因此如果在该调用中抛出异常,它有时很难捕捉。

否则,我建议using用于实现IDisposable而不是使用try-catch-finally的类型,因为它使代码更紧凑和干净。

编辑:找到了一个很好的msdn article来解释这个和其他陷阱。