如何确定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#中是不可能的。您将需要使用某种传统方法或委托来指示如何"添加"减去"等每项