.net Mono实现CLR吗?或者至少是一些非托管内部调用?还是什么都没有?
我们知道C#使用非托管代码(如p/Invoke)或CLR实现的代码(如InternalCall)。我想知道的是mono it是否自行实现了一个完整的CLR,或者只是一些非托管代码,或者什么都没有? 我可以使用.Net Reflector或ILSpy查看托管程序集,但有时由于性能问题,我需要了解CLR如何实现一些非托管代码。比如:System.String.get_lengh()是如何工作的?.net Mono实现CLR吗?或者至少是一些非托管内部调用?还是什么都没有?,.net,performance,mono,ilspy,.net,Performance,Mono,Ilspy,我们知道C#使用非托管代码(如p/Invoke)或CLR实现的代码(如InternalCall)。我想知道的是mono it是否自行实现了一个完整的CLR,或者只是一些非托管代码,或者什么都没有? 我可以使用.Net Reflector或ILSpy查看托管程序集,但有时由于性能问题,我需要了解CLR如何实现一些非托管代码。比如:System.String.get_lengh()是如何工作的? 任何人都可以回答上面的问题,或者提供一些相关信息。谢谢。是的,mono实现了整个CLR,因此如果您查看其
任何人都可以回答上面的问题,或者提供一些相关信息。谢谢。是的,mono实现了整个CLR,因此如果您查看其代码,您会发现类似
String.get_Length()
的方法的实现
但是Mono与Microsoft CLR是不同的实现。这意味着,如果您在Mono中查找String.get_Length()
的代码,那么Microsoft CLR可能有完全不同的方法来执行相同的操作
另一个选择是研究。它来自微软,可能比Mono更类似于他们的CLR实现,但它仍然不一样。最新的可用版本对应于.Net 2.0。是的,mono实现了整个CLR,因此如果您查看它的代码,您会发现类似
String.get_Length()
的方法的实现
但是Mono与Microsoft CLR是不同的实现。这意味着,如果您在Mono中查找String.get_Length()
的代码,那么Microsoft CLR可能有完全不同的方法来执行相同的操作
另一个选择是研究。它来自微软,可能比Mono更类似于他们的CLR实现,但它仍然不一样。最新的可用版本对应于.Net 2.0。它实现了CLR。看代码不是问题,Mono是开源的。@Hans:我刚得到Mono代码。可以问我应该查看哪个目录吗?是的,reflector在mono程序集上工作,它们是相同的二进制格式(这实际上是整个想法)。mono的System.String在这里实现:-Length属性不是icall。说mono实现CLI比实现CLR更正确吗?它实现CLR。看代码不是问题,Mono是开源的。@Hans:我刚得到Mono代码。可以问我应该查看哪个目录吗?是的,reflector在mono程序集上工作,它们是相同的二进制格式(这实际上是整个想法)。mono的System.String在这里实现:-Length属性不是icall。说mono实现CLI更正确吗,而不是实现CLR?我知道mono不是Microsoft。但有参考资料总比没有好得多。我正在搜索mono代码,仍然在寻找它。即将发布的.Net core 1.0是否会在其CLR相关的工作中使用mono Underflow?吹毛求疵:您对
String.get\u Length()
的第二次引用是否应该是String.get\u Length()
?如果没有,你能解释一下原因吗?@kevinarpe是的,修正了。谢谢。我知道mono不是微软。但有参考资料总比没有好得多。我正在搜索mono代码,仍然在寻找它。即将发布的.Net core 1.0是否会在其CLR相关的工作中使用mono Underflow?吹毛求疵:您对String.get\u Length()
的第二次引用是否应该是String.get\u Length()
?如果没有,你能解释一下原因吗?@kevinarpe是的,修正了。谢谢