当我们谈论.NET世界时,CLR就是我们所做的一切.什么是CLR的最低知识,.NET程序员必须要成为一名优秀的程序员?你能给我一个/多个你认为是/最重要的科目:GC?,AppDomain ?, Threads?,Processes ?, Assemblies/Fusion?
如果您发布文章,博客,书籍或其他有关可以找到更多信息的主题的链接,我将非常感激.
更新:我从一些评论中注意到我的问题并不清楚.当我说CLR我不是指.Net Framework.它不是关于记忆.NET库,而是要了解执行环境(这些库在运行时的生存环境)是如何工作的.
我的问题直接受到了"调试Microsoft®.NET应用程序"一书(我推荐)的作者John Robbins的启发,以及Wintellect的Jeffrey Richter引用的同事.在其中一篇介绍性章节中,他说"......任何.NET程序员都应该知道什么是探测以及如何将程序集加载到运行时".你觉得还有其他这样的东西吗?
最后更新:在阅读了"CLR via C#"的前5章后,我必须对任何阅读此内容的人说.如果还没有,请阅读本书!
其中大多数都比许多开发人员在我的经历中所贬低的那样深刻.我的经历中最容易被误解的(和重要的)方面:
值类型与引用类型
变量vs对象
通过ref和传递值
代表和活动
区分语言,运行时和框架
拳击
垃圾收集
在"变量与对象"前面,这里有三个关于代码的陈述
string x = "hello";
(非常糟糕)x
是一个包含5个字母的字符串
(稍微好一点)x
是对带有5个字母的字符串的引用
(正确)值x
是对包含5个字母的字符串的引用
显然前两个在"随意"对话中是可以接受的,但前提是每个参与者都了解真实情况.