使用“;使用“;用于所有非基本体对象

本文关键字:使用 对象 用于 | 更新日期: 2023-09-27 18:20:58

我相信有答案。。。但是在谷歌上搜索"C#使用"比你想象的要复杂一些。

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

这是一个相当准确的说法吗?还是对几乎所有内容使用"using"都有一些缺点(除了稍微混乱的代码之外)?

使用“;使用“;用于所有非基本体对象

不清楚你的意思——如果你的意思是使用诸如之类的语句

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

那么这只是适用于IDisposable实现的

如果您的意思是使用指令,如下所示:

using System.IO;

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

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

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

编辑:发现了一篇很好的msdn文章,解释了这一点和其他陷阱。