C# is an object-oriented programming language developed by Microsoft Corporation . C# source code as well as those of other .NET languages is compiled into an intermediate byte code called Microsoft Intermediate Langauge. 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. 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# 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. Microsoft C# developers note that C# 3.0 is bytecode compatible with C# version 2.0. For the most part, enhancements comprise purely syntactic or compile-time improvements. 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).