|Important||This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here.|
Generics Sample (C#)
This sample shows how to create a custom generic list class with a single type parameter, and how to implement IEnumerable<T> to enable foreach iteration over the contents of the list. The sample also shows how client code creates an instance of the class by specifying a type argument, and how constraints on the type parameter enable additional operations to be performed on the type arguments.
For an example of a generic collection class that implements an iterator block, see.
This sample code is provided to illustrate a concept and should not be used in applications or Web sites, as it may not illustrate the safest coding practices. Microsoft assumes no liability for incidental or consequential damages should the sample code be used for purposes other than as intended.
To open the sample file in Solution Explorer
Click Download Sample.
The File Download message box appears.
Click Open, and on the left column of the zip folder window, click Extract all files.
The Extraction Wizard opens.
Click Next. You can change the directory that the files will be extracted to, and then click Next again.
Make sure that the Show extracted files check box is selected, and click Finish.
Double-click the sample's .sln file.
The sample solution is displayed in Solution Explorer. You might get a security warning that says the solution location is not trusted. Click OK to continue.
To build and run the Generics sample within Visual Studio
On the Debug menu, click Start Without Debugging.
To build and run the Generics sample from the command line
Type the following at the command prompt:
csc generics.cs generics
This sample is provided for demonstration purposes and is not intended to be used without modification in production code. For production quality code, it is strongly recommended that you use the collection classes in thenamespace whenever possible.