2

我们知道 C# 使用非托管代码(如 P/Invoke)或 CLR 实现的代码(如 InternalCall)。我想知道的是单声道它自己实现了一个完整的 CLR 还是只是一些非托管代码或什么都没有?我可以使用 .Net Reflactor 或 ILSpy 来查看托管程序集,但有时由于性能问题,我需要知道 CLR 如何实现一些非托管代码。比如: System.String.get_lenght() 是怎么做的?任何人都可以回答上述问题,或者欢迎提供有关此的一些信息。谢谢。

4

1 回答 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 回答