Welcome to the Dictionary of Programming Languages, a compendium
of computer coding methods assembled to provide information and
aid your appreciation for computer science history.
Browse the dictionary by clicking on a section:
Get a full dump of the dictionary:
List of Names
- Language type:
C# is an object-oriented language derived
from C, with some features from C++, Java,
and Visual Basic. C# was designed by
Microsoft, initially as part of their
.net initiative. Microsoft claims that
C# offers the power and richness of C++
with the productivity of Visual Basic.
As a language in the C family, C# offers
the usual complement of primitive types:
integers, reals, booleans, and characters.
It also supports objects and arrays.
Unlike Java and C++, C# hides some of the
distinction between primitive types and
object types by automatically 'boxing'
and and 'unboxing' primitive as objects.
C# is strongly types and provides extensive
compile-time and run-time checking; unlike
Java, C# supports C-style unsafe pointers,
but only within specially designate code
sections. C# supports a string type that
is an object, but otherwise tightly integrated
with the rest of the language (just like Java).
C# supports single inheritance, overloading,
overriding, reflection, and polymorphism. Overriding
must be done explicitly. Because C# was
intended mainly to support development on
Windows operating systems, the C# object
model is designed to correspond directly with
Microsoft's COM/DCOM object mode.
C# also supports an interesting mechanism,
called properties, that allow a coder to
expose object methods but permits the user
of those objects to treat them as object
data attributes, reminiscent of CORBA IDL
and the Self language. Other features
supported by C# include structs, indexers,
operator overloading, and control over
C# is also designed to run on Microsoft's
Common Language Runtime (CLR), a Windows-oriented
set of standard packages and object libraries.
These standard packages available to C# include
a wide variety of data structures, I/O facilites,
network support, system interaction support,
GUI objects (highly Windows-specific), web
services, COM, and much more. C# fully supports
exception handling, although exceptions are
not always used consistently in the standard
C# provides garbage collection and automatic
For creating code for handling GUI events
and other external triggers, C# offers a
novel form of delegation. This is probably
the most complex feature of the language,
and has not counterpart in C++ or Java,
although Objective-C has something equivalent.
Another novel features of C#, which is actually
part of the Common Language Runtime, is the
notion of Attributes. Attributes are meta-data
about code, communications from the programmer
to the compiler and run-time system. In C,
such things are often done with pragmas and
non-standard keywords; in Java, marker interfaces
are used. Attributes are much richer than any
similar capability in comparable languages. They
also add a very complex facet to the language,
one which many developers will not need. Fortunately,
it is possible to write many
C# programs without uses
attributes at all.
Currently, the only full implementation of C#
is provided by the Microsoft .net compilers.
Microsoft makes a command-line compiler available
free, under the unintuitive name of the
".Net Framework SDK". Other
implementations are under
- See Also:
C# uses a single-rooted object hierarchy,
just like Java does. This helps to
simplify the creation of collection data
types. Oddly, C# also integrates support for
traversal of collections into the syntax
of the language itself, with the
"foreach" loop statement.
While C# is a solid programming language that
can stand on its own merits, most of the
information available about the language
ties it closely to the Microsoft Common
Language Runtime. Under the CLR, code is
compiled into an intermediate language,
unimaginatively named IL, and the IL code is
stored in self-describing binary assemblies.
Abstractly, these assemblies can be thought
of as code archives. Concretely, they are
really Microsoft PE-format executables.
Exactly how the IL code executes is up to
the implementor of the execution environment;
in Microsoft's environment, the IL is
translated into Intel machine code on a
C# supports multi-threading, although the
integration of threading and thread
synchronization into the C# language
is not as elegant as Java's approach.
Many books and web sites are available
for those that want to learn C#.
Descriptions in this dictionary are ©1997-99 Neal Ziring. Some
examples copyright of their respective authors. Some
technologies and languages are trademarked. Permission to
copy descriptions is granted as long as authorship credit is preserved.
Comments on this dictionary, corrections and suggestions, are all welcome.
Please use email, the address is firstname.lastname@example.org
[Ziring MicroWeb Home]
Dictionary and script maintained by Neal Ziring, last major modifications 3/18/98. Most recent
additions to dictionary and master list, 1/00.