Generics и «Один из параметров бинарного оператора должен быть содержащим типом »Ошибка

При объявлении бинарного оператора по крайней мере один из типов операндов должен быть содержащим типом. В целом это звучит удачное дизайнерское решение. Однако я не ожидал, что следующий код вызовет эту ошибку:

public class Exp<T>
{
    public static Exp<int> operator +(Exp<int> first, Exp<int> second)
    {
        return null;
    }
}

В чем проблема с этим оператором? Почему этот случай попадает под ограничения C # на перегрузку операторов? Опасно ли разрешать такое объявление?

5
задан nakhli 31 July 2011 в 19:30
поделиться