如何确定c#中变量类型是否支持给定的操作符

本文关键字:支持 操作符 是否 类型 何确定 变量 | 更新日期: 2023-09-27 18:02:41

我有这个问题:

我想创建一个泛型类,它将支持+、-、*、/操作符。例如一个矩阵类。问题是,有些数据类型支持上述所有操作符,有些支持其中的一部分,有些根本不支持。我想让我的类识别出上面哪些操作符是受支持的,如果其中一些操作符不受支持,我希望看到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>应该只支持/和+操作符

如何确定c#中变量类型是否支持给定的操作符

不幸的是,这是不可能的。操作符重载是静态的,因此您不能使用接口或继承来确保您的操作符被考虑。点击这里查看更多信息

在c#中是不可能的。您将需要使用某种传统方法或委托来指示如何"添加"减去"等每项