2012-03-29 22 views
6

W języku java możliwe jest powiązanie parametru typu typu ogólnego. Można to zrobić tak:Definiowanie ograniczonego parametru typu ogólnego w języku C#

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

więc parametr typu rodzajowego do tej klasie A lub B powinien być podklasą B.

Zastanawiam się czy C# ma podobną funkcję. Doceniam, czy ktoś mi dał znać.

Dzięki,

+3

'klasa A gdzie T: B {...}' myślę. Minęło trochę czasu. – asawyer

Odpowiedz

16

To samo w C# jest:

class A<T> where T : B 
{ 

} 

Zobacz również "Constraints on Type Parameters" (MSDN) na wielki przegląd ograniczeń w ogóle.

+0

Pokonaj mnie kilka sekund, gdy kończyłem, +1 dla łącza MSDN. –

9

bardzo podobne:

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

ten może być stosowany do ograniczenia T być podklasę lub wykonanie B (jeżeli B jest interfejsem).

Ponadto można ograniczyć T, aby być rodzaj odniesienia, typ wartości, albo wymagają domyślnego konstruktora:

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

Oczywiście można:

class A<T> where T: B 
{ 
    // ... 
} 
Powiązane problemy