Microsoft
Corporation developed a new computer programming language C# pronounced as 'C-
Sharp'. C# is a simple, modem, object oriented, and type safe programming
language derived from C and C++. C# is a purely object-oriented language like
as Java. It has been designed to support the key features of .NET framework.
Like Java, C# is a descendant language of C++ which is descendant of C
language.
C#
modernizes C++ by enhancing some of its features and adding a few new features.
C# borrows Java's features such as grouping of classes, interface and
implementation together in one file so the programmers can easily edit the
codes. C# also handles objects using reference, the same way as Java.
Comparing C# to C++
and Java
C#
and Java are both new-generation languages descended from a line including C
and C++. Each includes advanced features, like garbage collection, which remove
some of the low level maintenance tasks from the programmer. In a lot of areas
they are syntactically similar.
Both C# and Java compile initially to an intermediate language: C# to
Microsoft Intermediate Language (MSIL), and Java to Java byte code. In each
case the intermediate language can be run - by interpretation or just-in-time
compilation on an appropriate 'virtual machine'. In C#, however, more support
is given for the further compilation of the intermediate language code into
native code. C# contains more primitive data types than Java, and also allows
more extension to the value types. For example, C# supports 'enumerations',
type-safe value types which are limited to a defined set of constant variables,
and 'structs', which are user-defined value types.
Unlike
Java, C# has the useful feature that we can overload various operators.
Like
Java, C# gives up on multiple class inheritance in favor of a single
inheritance model extended by the multiple inheritances of interfaces. However,
polymorphism is handled in a more complicated fashion; with derived class
methods either 'overriding' or 'hiding' super class methods
C#
also uses 'delegates'-type-safe method pointers. These are used to implement
event handling.
C# versus C++
Although
it has some elements derived from Visual Basic and Java, C++ is C#'s closest
relative. In an important change from C++, C# code does not require header
files. All code is written inline.
As
touched on above, the .NET runtime in which C# runs performs memory management,
taking care of tasks like garbage collection. Because of this, the use of
pointers in C# is much less important than in C++. Pointers can be used in C#,
where the code is marked as 'unsafe', but they are only really useful in
situations where performance gains are at an absolute premium.
Speaking
generally, the 'plumbing' of C# types is different from that of C++ types, with
all C# types being ultimately derived from the 'object' type. For instance, C#
arrays are bounds checked unlike in C++, and it is therefore not possible to
write past the end of a C# array.
C#
statements are quite similar to C++ statements. To note just one example of a
difference: the 'switch' statement has been changed so that 'fall-through'
behavior is disallowed.
As
mentioned above, C# gives up on the idea of multiple class inheritance. Other
differences relating to the use of classes are: there is support for class
'properties' of the kind found in Visual Basic, and class methods are called
using the Operator rather than the :: operator.