Search code examples
c#.netclr

What is the minimum knowledge of CLR a .NET programmer must have to be a good programmer?


When we talk about the .NET world the CLR is what everything we do depends on. What is the minimum knowledge of CLR a .NET programmer must have to be a good programmer? Can you give me one/many you think is/are the most important subjects: GC?, AppDomain?, Threads?, Processes?, Assemblies/Fusion?

I will very much appreciate if you post a links to articles, blogs, books or other on the topic where more information could be found.

Update: I noticed from some of comments that my question was not clear to some. When I say CLR I don't mean .Net Framework. It is NOT about memorizing .NET libraries, it is rather to understand how does the execution environment (in which those libraries live on runtime) work.

My question was directly inspired by John Robbins the author of "Debugging Applications for Microsoft® .NET" book (which I recommend) and colleague of here cited Jeffrey Richter at Wintellect. In one of introductory chapters he is saying that "...any .NET programmer should know what is probing and how assemblies are loaded into runtime". Do you think there are other such things?

Last Update: After having read first 5 chapters of "CLR via C#" I must say to anyone reading this. If you haven't allready, read this book!


Solution

  • Most of those are way deeper than the kind of thing many developers fall down on in my experience. Most misunderstood (and important) aspects in my experience:

    • Value types vs reference types
    • Variables vs objects
    • Pass by ref vs pass by value
    • Delegates and events
    • Distinguishing between language, runtime and framework
    • Boxing
    • Garbage collection

    On the "variables vs objects" front, here are three statements about the code

    string x = "hello";
    
    • (Very bad) x is a string with 5 letters
    • (Slightly better) x is a reference to a string with 5 letters
    • (Correct) The value of x is a reference to a string with 5 letters

    Obviously the first two are okay in "casual" conversation, but only if everyone involved understands the real situation.