泛型和"二元操作符的一个形参必须是包含类型"错误
本文关键字:quot 形参 类型 错误 一个 包含 二元操作符 泛型 | 更新日期: 2023-09-27 18:04:00
声明二进制操作符时,至少有一个操作数类型必须是包含类型。这听起来是一个很好的设计决策。但是,我没想到下面的代码会导致这个错误:
public class Exp<T>
{
public static Exp<int> operator +(Exp<int> first, Exp<int> second)
{
return null;
}
}
这个运算符有什么问题?为什么这种情况属于c#的操作符重载限制?允许这种申报有危险吗?
因为包含类型是Exp<T>
,而不是Exp<int>
。你在这里要做的是像c++那样专门化,这在c#中是不可能的。
您在Exp<T>
类型的类中,操作符中的两个参数都不是Exp<T>
,它们都是Exp<int>
。