Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net FileStream是托管代码还是非托管代码?_.net - Fatal编程技术网

.net FileStream是托管代码还是非托管代码?

.net FileStream是托管代码还是非托管代码?,.net,.net,我在一次采访中被问到这个问题,我说答案是合理的。面试官似乎很惊讶。我的问题是,即使它访问一个文件(本机/非托管资源),但这个类不是托管的吗?或者你认为我应该有一些后续问题来得到更多的澄清吗?你可以看看这个问题 从这个讨论中,我会说它是托管代码,因为您可以通过.NET运行时访问和管理资源,根据ILSpy,FileStream包含大量托管代码,因此您可以认为它是托管的。然而,最终所有文件I/O都必须解析为Win32 P/Invoke调用,所以您可能会认为它是非托管代码的包装器。这完全取决于您的定义

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

你可以看看这个问题


从这个讨论中,我会说它是托管代码,因为您可以通过.NET运行时访问和管理资源,根据ILSpy,
FileStream
包含大量托管代码,因此您可以认为它是托管的。然而,最终所有文件I/O都必须解析为Win32 P/Invoke调用,所以您可能会认为它是非托管代码的包装器。这完全取决于您的定义。

通常,CLR运行的所有代码都被认为是托管的,至少在您的透视图中是托管的,除此之外,还有Win32 API、ActiveX、COM对象,这些都是非托管的


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

你应该让他在回答之前澄清这个问题。这个问题显然是模棱两可和荒谬的(依我看)。是的,我的错。我会记住的。谢谢。而且从本机代码访问它几乎是不可能的。谢谢,我也这么认为,所以说是托管的。正如我所说,我应该问更多的问题来澄清这个问题。