4

我在一次采访中被问到这个问题,我说答案是 Managed。面试官似乎很惊讶。我的问题是即使它访问一个文件(本机/非托管资源),但这个类不是托管的吗?还是您认为我应该提出一些后续问题以获得更多澄清?

4

3 回答 3

3

根据 ILSpy 的说法,FileStream它包含大量托管代码,因此您可以争辩说它是托管的。但是,最终所有文件 I/O 都必须解析为 Win32 P/Invoke 调用,因此您可以争辩说它是对非托管代码的包装。这取决于您的定义。

于 2012-07-20T08:12:13.053 回答
1

通常,至少从您的角度来看,CLR 运行的所有代码都被认为是托管的,除此之外,您还有 Win32 API、ActiveX、COM 对象,这些都是非托管的。

AS FileStream 是.Net 的一个类,因此它是一个托管类/对象。但它使用了一些 Windows 资源,因此它没有被管理,你必须在使用它后处理它的对象。.

于 2012-07-20T08:20:50.290 回答
0

你可以看看这个问题

什么是托管代码和非托管代码?

从那个讨论中我会说它是托管代码,因为您通过 .NET 运行时访问和管理资源

于 2012-07-20T08:09:58.670 回答