2012-03-29 10 views
6

In java, è possibile associare il parametro type di un tipo generico. Si può fare in questo modo:Definizione del parametro del tipo generico limitato in C#

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

Così, il parametro di tipo per questa classe generica di A dovrebbe essere B o una sottoclasse di B.

Mi chiedo se C# ha una funzione simile. Apprezzo se qualcuno me lo fa sapere.

Grazie,

+3

'classe A dove T: B {...}' penso. È passato un po 'di tempo. – asawyer

risposta

16

Lo stesso in C# è:

class A<T> where T : B 
{ 

} 

Vedere anche "Constraints on Type Parameters" (MSDN) per una grande rassegna di vincoli in generale.

+0

Batti un paio di secondi mentre stavo finendo il mio, +1 per il collegamento MSDN. –

9

Molto simile:

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

Questo può essere utilizzato per vincolare T essere una sottoclasse o implementazione di B (se B è un'interfaccia).

Inoltre, è possibile vincolare T di essere tipo di riferimento, tipo di valore, o di richiedere un costruttore di default:

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

Naturalmente è possibile:

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