繁体   English   中英

如何确定变量类型是否支持C#中的给定运算符

[英]How to determine whether a variable type supports given operators in C#

我有这个问题:

我想制作一个通用类,它将支持+,-,*,/运算符。 例如,矩阵类。 问题是,某些数据类型支持上述所有运算符,某些数据支持部分运算符,有些则根本不支持它们。 我想让我的班认识到上面的哪些运算符受支持,如果其中一些不受支持,我想看到一个COMPILE TIME错误。

例:

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

Matrice<string> :我们只能执行+,因为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#中是不可能的。 您将需要使用某种传统方法或委托来指示如何为每个项目“添加”“减”等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM