2009-07-17 2 views
5

Я хочу создать общий класс, который принимает параметр типа и ограничивает этот параметр числовыми типами или, вообще говоря, любым типом, на который может быть применен оператор инкремента ++.Общий класс с ограниченным параметром Тип

Я знаю, что я могу сделать следующее, чтобы ограничить структуры, но, очевидно, существуют структуры, которые не являются числовыми типами и для которых оператор ++ не поддерживается. Могу ли я сделать это в C#

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

Это часто запрашиваемая функция. Для реализации этого потребуются изменения как языка, так и времени выполнения. Это _possibility_ для гипотетических будущих версий, но вряд ли наш приоритет. –

+0

Возможный дубликат [Общее ограничение для сопоставления числовых типов] (http://stackoverflow.com/questions/3329576/generic-constraint-to-match-numeric-types) – nawfal

ответ

8

К сожалению, это не представляется возможным (см here.) Вы можете ограничить тип на:

  • Реализация конкретного интерфейса или вывести из определенного класса
  • Будь class или struct
  • Иметь конструктор без параметров

Ограничение типов для конкретных операторов - это очень запрошенная функция, но я считаю, что она также не будет в C# 4.