我们知道 C# 使用非托管代码(如 P/Invoke)或 CLR 实现的代码(如 InternalCall)。我想知道的是单声道它自己实现了一个完整的 CLR 还是只是一些非托管代码或什么都没有?我可以使用 .Net Reflactor 或 ILSpy 来查看托管程序集,但有时由于性能问题,我需要知道 CLR 如何实现一些非托管代码。比如: System.String.get_lenght() 是怎么做的?任何人都可以回答上述问题,或者欢迎提供有关此的一些信息。谢谢。
问问题
1186 次
1 回答
4
是的,mono 确实实现了整个 CLR,所以如果你查看它的代码,你会发现像String.get_Length()
.
但是 Mono 是与 Microsoft CLR 不同的实现。这意味着如果您在 Mono 中查找代码,String.get_Length()
那么 Microsoft CLR 可能有完全不同的方式来做同样的事情。
另一种选择是查看Shared Source Common Language Infrastructure。它来自 Microsoft,它可能更类似于他们的 CLR 实现而不是 Mono,但它仍然不一样。最新的可用版本对应于.Net 2.0。
于 2012-02-17T01:59:00.003 回答