Generics in the .NET Compact Framework

[This documentation is for preview only, and is subject to change in later releases. Blank topics are included as placeholders.]

The .NET Compact Framework provides core language feature compatibility for C# and Visual Basic in the implementation of generics and generic collections.

The following differences apply between generics in the .NET Compact Framework and in the full .NET Framework:

  • Expansive generic recursion through fields is not supported. For example, the following C# field declaration is not supported:

    class MyData<T> 
        MyData<MyData<T>> field;

    Other kinds of generic recursion are supported, such as the following C# class declarations:

    class C : IComparable<C>
    class C<T> : IComparable<C<T>>
  • The .NET Compact Framework does not validate constraints for normal execution in the absence of a verifier. Reflection will still verify the constraints when binding to generic parameters.

  • The number of generic parameters you can use is limited to eight.

  • The .NET Compact Framework provides limited reflection functionality for generic types and methods, sufficient for supporting C# and Visual Basic runtime and class library dependencies.