2

我有这个问题:

我想创建一个支持 +、-、*、/ 运算符的通用类。例如一个矩阵类。问题是,有些数据类型支持所有上述运算符,有些支持其中的一部分,有些则根本不支持。我想让我的班级认识到上述哪些运算符受支持,如果其中一些不受支持,我希望看到编译时间错误。

例子:

Matrice<int>: 我们可以做 +, -, /, * 因为 int 有这些运算符重载/定义

Matrice<string>:我们只能做+,因为字符串只有+重载/定义,如果我们尝试
Matrice<string> a = new Matrice<string>;
Matrice<string> b = new Matrice<string>;
Matrice<string> c = a*b;
我们应该得到一个编译时间错误

Matrice<CustomClass>:如果 CustomClass 只有 / 和 + 重载(例如),则Matrice<CustomClass>应该只支持 / 和 + 运算符

4

2 回答 2

4

不幸的是,这是不可能的。运算符重载是静态的,因此您不能使用接口或继承来确保考虑运算符。在这里查看更多

于 2013-03-06T18:51:05.857 回答
2

This is not possible in C#. You will need to use some sort of traditional method or delegate to indicate how to "add" "subtract", etc. for each item.

于 2013-03-06T18:52:10.880 回答