什么是CLR的最低知识,.NET程序员必须要成为一名优秀的程序员?

时间:2008-11-18 23:08:57

标签: c# .net clr

当我们谈论.NET世界时,CLR就是我们所做的一切。 什么是CLR的最低知识,.NET程序员必须要成为一名优秀的程序员? 你能给我一个/多个你认为是/最重要的科目: GC?,AppDomain?,Threads?,Processes?,Assemblies / Fusion?

如果您发布文章,博客,书籍或其他有关可以找到更多信息的主题的链接,我将非常感激。

更新:我从一些评论中注意到我的问题并不清楚。当我说CLR我不是指.Net Framework。它不是关于记忆.NET库,而是要了解执行环境(这些库在运行时的生存环境)是如何工作的。

我的问题直接受到了“调试Microsoft®.NET应用程序”一书(我推荐)的作者John Robbins的启发,以及Wintellect的Jeffrey Richter引用的同事。在其中一篇介绍性章节中,他说“......任何.NET程序员都应该知道什么是探测以及如何将程序集加载到运行时”。你觉得还有其他这样的东西吗?

最后更新:在阅读了“通过C#CLR”的前5章后,我必须对任何阅读此内容的人说。如果还没有,请阅读本书!

7 个答案:

答案 0 :(得分:32)

其中大多数都比许多开发人员在我的经历中所贬低的那样深刻。我经历中最容易被误解的(和重要的)方面:

  • 值类型与引用类型
  • 变量与对象
  • 通过参考vs传递值
  • 代表和活动
  • 区分语言,运行时和框架
  • 拳击
  • 垃圾收集

在“变量与对象”前面,这里有三个关于代码的陈述

string x = "hello";
  • (非常糟糕)x是一个包含5个字母的字符串
  • (略好)x是对包含5个字母
  • 的字符串的引用
  • (正确)x的值是对包含5个字母
  • 的字符串的引用

显然前两个在“随意”对话中都没问题,但前提是每个参与者都了解真实情况。

答案 1 :(得分:4)

更新:通过C#by Jeffrey Richter阅读本书CLR的相关部分......这本书可以作为一个很好的参考..

答案 2 :(得分:4)

伟大的程序员无法通过他了解CLR的数量来衡量。当然这是一个不错的开始,但他也必须知道OOP / D / A以及许多其他的东西,如设计模式,最佳实践,O / RM概念等。

事实上我会说“伟大的.Net程序员”根本不需要了解CLR,只要他对通用编程理论和概念有很好的了解......

我宁愿聘请一位具有Java知识和经验的“优秀Java开发人员”来完成.Net工作,然后是.Net中的“主人”,他们几乎没有经验并且认为O / RM是股票代码和存储过程是一个“抽象出数据库”的好方法......

我见过.Net中的专业教师完全没有做真正简单的事情而没有因为缺乏“一般知识”而背弃他们,而他们同时“知道一切”了解.Net和CLR ......

答案 3 :(得分:1)

应该了解内存管理,代表

答案 4 :(得分:1)

Jon的回答对我来说似乎相当完整(加上代表们),但我认为从一般情况来看,从根本上分离一个优秀的程序员是回答问题的原因而不是问题。很高兴了解垃圾收集的工作原理以及值类型和引用类型的工作原理,但它是了解何时使用值类型与引用类型的完整其他级别。这是用语言讲话和用语言讲话之间的区别(这完全取决于我们如何应用我们拥有的知识以及我们如何做出这些决定)。

答案 5 :(得分:0)

Jon的回答很好。这些都是相当基础但很重要的领域,很多开发人员都不太了解。我认为了解值和引用类型之间的区别与对.NET中的GC行为的基本理解有关,但更重要的是,对Dispose模式的良好理解很重要。

您提到的其他领域要么是对CLR本身非常了解,要么是更广泛使用的高级概念(尚未)。 [.NET 4.0将开始通过引入并行扩展和MEF来改变其中一些。]

答案 6 :(得分:0)

一件可能非常棘手的事情是推迟执行等等。

如何解释返回IEnumerable的方法是如何工作的?代表真的做了什么?这样的事情。