A more useful analogy to understand C# mindset

My main detailed design and programming experience has been colored by C and C++ programming mindsets; my second main influence has been Object Pascal and my third one, Java.

When I first learned C#, I assumed that it is more like C++, based on "C# –pronounced 'C sharp' for the musically disinclined– to provide the computing power of the C++ language and the ease of use of its own Visual Basic language"

Believe that was my decision and was misleading; that basic assumption causes me troubles, disturbing surprises that diminish the great experience of learning a new programming language –C# destructors for example. Mainly because my wishful thinking was "I know C# almost entirely because it has a syntax I know already", but the front end of a programming language is a very little part of what entails successful design using that particular design notation (programming language syntax).

Each programming language has its own mindset so analogies or comparisons with other programming languages provide little help or value if you want to use it well. As a tool, a programming language should be used for the problems intended to be solved by the original designers of the language.

Having said that, it is interestingly enough that when comparing programming languages mindsets (not the programming languages themselves), C# mindset (A Conversation with Anders Hejlsberg) looks more like the Object Pascal mindset (in the context of my own experience). Since I realized this, I have found that analogy useful and it makes the design of software with C# front end a better experience.