我最近学习了如何使用Microsoft.VisualBasic.FileIO.TextFieldParser
来解析文本输入。在给我的示例中,TextFieldParser
使用关键字调用using
using (var parser = new Microsoft.VisualBasic.FileIO.TextFieldParser(new StringReader(str)))
虽然经过一些 进一步的 研究,我注意到使用using
关键字 for的做法TextFieldParser
并不普遍。
据我了解,.Net
Framework 既有托管资源,也有非托管资源。当我们使用非托管资源时,我们应该担心内存泄漏,因此我们应该处理我们使用的非托管资源。一种最好的方法是把它们放在using
上下文中。
所有这些都促使我在脑海中产生两个问题,一个是特殊的,一个是一般的。以下是我的问题:
- 特别是: TextFieldParser 实际上是托管的还是非托管的?
- 一般:是否有明确的方法让我们知道资源是受管理的还是不受管理的(例如查看
X
类中的事物等,或者甚至从MSDN中检查某些内容 - 如果应该检查的话 - 就可以了)。在我短暂的编程经验中,有人告诉我一些指导,例如 (i) 大多数.Net
类是托管的,(ii) System.Drawing 类有一些非托管资源,(iii) 提防所有数据库、网络和 COM 类,因为它们通常是不受管理的,等等......而且我一直添加到现在的列表还在继续。但我想知道是否有任何明确的方法可以知道这一点?
如果更有经验的人能帮助我在这个问题上进一步指导我,我将不胜感激。