, evildictait​or wrote   I disagree whole-heartedly.
Understanding how memory works and is laid out in a C# program
is outrageously complicated for someone just starting out in the
language, and since the language goes to so much effort to
shield you from it, that sounds like a baffling way to start.
C# is about algorithms, not about performancememory or anything
else.  And optimising your programs for memory or performance
before you even properly understand the language is a recipe for
disaster; a little knowledge often is worse than none at all
when it comes to these things (for instance, if he decides to
pinvoke to "strlen" because "pinvokes are faster than managed
code" he'll be in for a nasty surprise).   We have a kind of
paradoxical thing when it comes to modern programming....  on
one hand a good understanding of the background and of the low
level operations and methods can help a skilled developer create
a superior codebase.  on the other hand we have environments /
runtimes and such that allow a