我们知道 C# 使用非托管代码(如 P/Invoke)或 CLR 实现的代码(如 InternalCall)。我想知道的是 mono 它自己实现了一个完整的 CLR 还是只是一些非托管代码或者什么都没有? 我可以使用.Net Reflactor或ILSpy来查看托管程序集,但有时由于性能问题我需要知道CLR如何实现一些非托管代码。例如:System.String.get_lenght() 是如何做的? 任何人都可以回答上述问题,或者欢迎提供一些有关此问题的信息。谢谢。
最佳答案
是的,mono 确实实现了整个 CLR,因此如果您查看其代码,您会发现诸如 String.get_Length()
之类的方法的实现。
但是 Mono 是与 Microsoft CLR 不同的实现。这意味着,如果您在 Mono 中查找 String.get_Length()
的代码,那么 Microsoft CLR 可能会采用完全不同的方式来完成同样的事情。
另一个选择是查看 Shared Source Common Language Infrastructure 。它来自 Microsoft,可能比 Mono 更类似于他们的 CLR 实现,但仍然不一样。最新的可用版本对应于.Net 2.0。
关于.net - Mono 实现 CLR 吗?或者至少有一些非托管内部调用?或无?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9321803/