我有这个问题:
我想创建一个支持+, - ,*,/运算符的泛型类。例如Matrice类。问题是,一些数据类型支持所有上述运算符,一些支持部分数据类型,一些数据类型根本不支持它们。我想让我的班级认识到上述哪些操作符受支持,如果不支持其中一些操作符,我希望看到 COMPILE TIME 错误。
示例:
Matrice<int>
:我们可以做+, - ,/,*因为int有这些运算符重载/定义
Matrice<string>
:我们只能做+,因为字符串只有+重载/定义,如果我们尝试
Matrice<string> a = new Matrice<string>;
Matrice<string> b = new Matrice<string>;
Matrice<string> c = a*b;
我们应该得到 COMPILE TIME 错误
Matrice<CustomClass>
:如果CustomClass只有/和+重载(例如)Matrice<CustomClass>
应仅支持/和+运算符
答案 0 :(得分:4)
不幸的是,这是不可能的。运算符重载是静态的,因此您无法使用接口或继承来确保考虑运算符。查看更多here
答案 1 :(得分:2)
这在C#中是不可能的。您将需要使用某种传统方法或委托来指示如何为每个项目“添加”“减去”等。