I refer you to the first page of the C # specification, which describes the important factors that went into the design of the language. A few quotes indicate that some of the important factors have been and continue to be:
modern, object oriented and safe type
-
directly familiar to C, C ++, and Java programmers.
-
Modern software design increasingly relies on software components in the form of independent and self-describing functionality packages. The key to such components is that they are a programming model with properties, methods, and events; they have attributes that provide declarative information about the component; and they include their own documentation. C # provides language constructs for directly supporting these concepts, making C # a very natural language for creating and using software components.
-
Several C # functions help in building strong and durable applications: garbage collection [...] exception handling [...] type-safe design
-
C # has a unified type system. [...] values โโof any type can be stored, transported and managed in an agreed manner.
-
To ensure that C # programs and libraries can evolve over time in a compatible mode, much attention has been paid to version control in C # design. Many programming languages โโpay little attention to this problem, and as a result, programs written in these languages โโbreak more often than necessary when newer versions of dependent libraries are introduced. C # design aspects that were directly influenced by version considerations include separate virtual and override modifiers, method overload resolution rules, and support for explicit declarations of interface members.
Eric Lippert May 29 '10 at 4:08 a.m. 2010-05-29 04:08
source share