Contents |
Overview of the C# Language
C# is an object-oriented programming language developed by Microsoft Corporation as part of their .NET initiative in response to the success of Sun Microsystems' Java programming language. C# source code—as well as those of other .NET languages—is compiled into an intermediate byte code called MSIL (Microsoft Intermediate Language. C# is primarily derived from the C, C++, and Java programming languages with some features of Microsoft's Visual Basic in the mix.C# is used to develop applications for the Microsoft .NET environment. .NET offers an alternative to Java development. Microsoft's Visual Studio .NET development environment incorporates several different languages including ASP.NET, C#, C++, and J# (Microsoft Java for .NET), all of which compile to the Common Language Runtime.
C# design goals
According to the Introduction to the Standard ECMA-334 C# Language Specification:As the definition of C# evolved, the goals used in its design were as follows:
- C# is intended to be a simple, modern, general-purpose, object-oriented programming language.
- The language, and implementations thereof, should provide support for software engineering principles such as strong type checking, array bounds checking, detection of attempts to use uninitialized variables, and automatic garbage collection. Software robustness, durability, and programmer productivity are important.
- The language is intended for use in developing software components suitable for deployment in distributed environments.
- Source code portability is very important, as is programmer portability, especially for those programmers already familiar with C and C++.
- Support for internationalization is very important.
- C# is intended to be suitable for writing applications for both hosted and embedded systems, ranging from the very large that use sophisticated operating systems, down to the very small having dedicated functions.
- Although C# applications are intended to be economical with regard to memory and processing power requirements, the language was not intended to compete directly on performance and size with C or assembly language.
C# 2.0 new language features
New Features in C# 2.0 - twelve "labs" which cover only the new C# 2.0 features.- A new form of iterator employs co-routines via a functional-style
yield
keyword similar to the one found in the Python language. - Anonymous methods provide closure functionality.
- Generics or parameterized types support some features not supported by C++ templates such as type constraints on generic parameters. However, expressions cannot be used as generic parameters as in C++ templates. In contrast to the Java implementation, parameterized types are first class objects in the virtual machine, allowing for optimizations and preservation of type information.
- Nullable value types facilitate interaction with SQL databases. Sample nullable type declaration:
int? variableName = null;
- Partial types allow the separation of a class implementation into more than one source file. This feature was implemented primarily so Visual Studio generated code can be kept seperate from developer code.
C# 3.0 new language features
C# version 3.0 introduces several language extensions to support higher order, functional style class libraries. The extensions enable the construction of compositional APIs with the expressive power of query languages in areas such as relational databases and XML. C# 3.0 will include the following new features:- Anonymous types: tuple types automatically inferred and created from object initializers.
- Object initializers ease construction and initialization of objects.
- Implicitly typed local variables permit the type of local variables to be inferred from the expressions used to initialize them.
- Implicitly typed arrays: a form of array creation and initialization that infers the element type of the array from an array initializer.
- Extension methods make it possible to extend existing types and constructed types with additional methods.
- Lambda expressions: an evolution of anonymous methods providing improved type inference and conversions to both delegate types and expression trees.
- Expression trees permit lambda expressions to be represented as data (expression trees) instead of as code (delegates).
- Query expressions provide a language integrated syntax for queries that is similar to relational and hierarchical query languages such as SQL and XQuery.
A Brief History of C#
C# was designed for developing components in a fully object-oriented manner as part of the Microsoft .NET initiative. C# debuted in the year 2000 at the Professional Developers Conference (PDC) where Microsoft founder Bill Gates was the keynote speaker. At the same time, Visual Studio .NET was announced.The primary architects of C# were Peter Golde, Eric Gunnerson, Anders Hejlsberg, Peter Sollichy, and Scott Wiltamuth. Of these, the principal designer of the the C# language was Anders Hejlsberg, a lead architect at Microsoft. Previously, he was a framework designer with experience with Visual J++ (Microsoft's old version of the Java language), Delphi, and Turbo Pascal.
Both C# and the Common Language Infrastructure (CLI) have been submitted to international standards organizations European Computer Manufacturers Association (ECMA) and International Organization for Standardization (ISO) / International Electrotechnical Commission (IEC).