Generics for C# and .NET CLR

 

PLDI Paper

(May 01, 2003) NEW!
Gyro 1.0

Gyro is a set of files that convert an existing installation of the Microsoft Shared Source CLI 1.0 to support generic type definitions and generic methods. Gyro extends the CLI, ILAsm assembler, and C# compiler. It also includes several samples, documentation (in the form of specifications) and some new tests. It does not support generics in the JScript® compiler.

Gyro is distributed as a set of files to be installed over an existing installation of the 1.0 release of the SSCLI (also known as the "Beta Refresh").  After you have downloaded Gyro, unpack it to a new directory, and then follow the instructions in the gyro.html file.  Note: you may need to do a clean build of the system.

Microsoft's research work on generics is an ongoing project. This release is intended to allow you to familiarise yourself with the current state of the research, and to provide feedback where appropriate. Several aspects of this proposed design of Generics for the CLI will change in future releases.  Please mail your feedback to gyro@microsoft.com

(May 02, 2001)
The Design and Implementation of Generics for the .NET Common Language Runtime
presented at PLDI 2001.

The PPG group at MSR Cambridge have been designing and prototyping support for "generics" in C# and the .NET Common Language Runtime.  Generics are also known as polymorphism, parameterized types, or templates.  

What are generics?

Generics refer to classes and methods that work uniformly on values of different types. Example source language features that relate to generics include:

bulletGenerics in C# (proposed)
bulletGenerics in Ada and Eiffel
bulletPolymorphism in Component Pascal, Standard ML, OCaml, Haskell, and Mercury
bulletFunctors (parameterized modules) in Standard ML and Caml
bulletTemplates in C++

Container classes are the canonical example of the use of generics to simplify object-oriented programming.

Where can I find out more?

Our PLDI paper (postscript, pdf) is a good place to start.  If you wish to know more about C#, the Common Language Runtime or .NET then MSDN has excellent information and further links.

The Microsoft Research home pages will tell you more about where we work, and you may be interested in the home pages for Don Syme and Andrew Kennedy.

Discussion Groups and Contacts

The internet discussion group news://microsoft.public.dotnet.languages.csharp  frequently contains discussions about generics.  The C# team and community are very willing to receive further feedback on generics.

You may also contact dsyme@microsoft.com, akenn@microsoft.com or the C# team.