泛型和"二元运算符的参数之一必须是包含类型"错误

nak*_*hli 5 c# operator-overloading operators

声明二元运算符时,至少有一个操作数类型必须是包含类型.这听起来总体上是一个很好的设计决定.但是,我没想到以下代码会导致此错误:

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

这个运营商有什么问题?为什么这种情况属于c#的运算符重载限制?允许这种声明是危险的吗?

use*_*016 5

因为包含类型Exp<T>不是Exp<int>.你正在尝试做的,是专业化一拉 C++,这是不可能在C#.