2012-03-29 51 views
6

Trong java, có thể ràng buộc tham số kiểu của kiểu chung. Nó có thể được thực hiện như thế này:Xác định tham số kiểu chung bị chặn trong C#

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

Vì vậy, tham số kiểu cho lớp generic này của A nên B hoặc một lớp con của B.

Tôi tự hỏi nếu C# có một tính năng tương tự. Tôi đánh giá cao nếu ai đó cho tôi biết.

Cảm ơn,

+3

lớp 'Một nơi T: B {...}' Tôi nghĩ. Đã một thời gian rồi. – asawyer

Trả lời

16

Cùng trong C# là:

class A<T> where T : B 
{ 

} 

Xem thêm "Constraints on Type Parameters" (MSDN) cho một tổng quan tuyệt vời của những hạn chế nói chung.

+0

Đánh bại tôi một vài giây trong khi tôi đã hoàn thành, +1 cho liên kết MSDN. –

9

Rất tương tự:

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

này có thể được sử dụng để hạn chế T là một sub-class hoặc thực hiện B (nếu B là một giao diện).

Bên cạnh đó, bạn có thể hạn chế T là kiểu tham chiếu, kiểu giá trị, hoặc yêu cầu một constructor mặc định:

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

Tất nhiên bạn có thể:

class A<T> where T: B 
{ 
    // ... 
} 
Các vấn đề liên quan