在聲明二元運算符時,至少有一個操作數類型必須是包含類型。這聽起來總體上是一個很好的設計決策。但是,我沒有想到下面的代碼會導致此錯誤:泛型和「二元運算符的參數之一必須是包含類型」錯誤
public class Exp<T>
{
public static Exp<int> operator +(Exp<int> first, Exp<int> second)
{
return null;
}
}
此運算符的問題是什麼?爲什麼這種情況屬於c#的運算符重載限制?允許這種聲明是危險的嗎?
所以這裏的問題不是操作數與包含類型無關,這可能是危險的,但它不允許有「專業化」? – nakhli
是的。你正在做的事情看起來完全像C++ *模板特化*,這在C#中是不可能的。看看[這個](http://stackoverflow.com/questions/600978/how-to-do-template-specialization-in-c)。 –