2012-03-29 24 views
6

En Java, es posible enlazar el parámetro de tipo de un tipo genérico. Se puede hacer de la siguiente manera:Definición del parámetro de tipo genérico limitado en C#

class A<T extends B>{ 
... 
} 

Por lo tanto, el parámetro de tipo para esta clase genérica de A debe ser B o una subclase de B.

Me pregunto si C# tiene una característica similar. Aprecio si alguien me lo hace saber.

Gracias,

+3

'clase A donde T: B {...}' creo. Ha sido un tiempo. – asawyer

Respuesta

16

Lo mismo en C# es:

class A<T> where T : B 
{ 

} 

también vemos "Constraints on Type Parameters" (MSDN) para una gran visión de conjunto de restricciones en general.

+0

Batirme por unos segundos mientras terminaba el mío, +1 para el enlace de MSDN. –

9

muy similar:

public class A<T> where T : B 
{ 
    // ... 
} 

Esto se puede utilizar para limitar T a ser una sub-clase o aplicación de B (si B es una interfaz).

Además, puede restringir T para ser del tipo de referencia, tipo de valor, o exija a un constructor por defecto:

where T : class  // T must be a reference type 
where T : struct // T must be a value type 
where T : new()  // T must have a default constructor 
3

Por supuesto que puedes:

class A<T> where T: B 
{ 
    // ... 
} 
Cuestiones relacionadas