2009-07-17 38 views
5

Tôi muốn tạo một lớp chung có tham số kiểu và hạn chế tham số đó thành kiểu số hoặc thường là kiểu bất kỳ khi toán tử tăng ++ có thể được áp dụng.Lớp chung với tham số kiểu bị hạn chế

Tôi biết tôi có thể thực hiện các thao tác sau để hạn chế cấu trúc nhưng rõ ràng có các cấu trúc không phải là kiểu số và toán tử ++ không được hỗ trợ. Tôi có thể làm điều này trong C#

class Example<T> where T : struct 
{ 
    //Implementation detail 
} 
+2

Đây là tính năng được yêu cầu thường xuyên. Việc triển khai nó sẽ yêu cầu thay đổi đối với cả ngôn ngữ và thời gian chạy. Đó là một _possibility_ cho các phiên bản giả định trong tương lai, nhưng không phải là ưu tiên cao nhất của chúng tôi. –

+0

có thể trùng lặp của [Ràng buộc chung để đối sánh với các loại số] (http://stackoverflow.com/questions/3329576/generic-constraint-to-match-numeric-types) – nawfal

Trả lời

8

Thật không may này là không thể (xem here.) Bạn chỉ có thể hạn chế các loại để:

  • Thực hiện một giao diện cụ thể hoặc có nguồn gốc từ một lớp học cụ thể
  • Hãy là class hoặc struct
  • Có một hàm tạo tham số

Loại hạn chế để có các toán tử cụ thể là một tính năng được yêu cầu nhiều nhưng tôi tin rằng nó sẽ không nằm trong C# 4.

Các vấn đề liên quan