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