2

私はこの問題を抱えています:

+、-、*、/演算子をサポートするジェネリッククラスを作成したいと思います。たとえば、Matriceクラス。問題は、一部のデータ型は上記の演算子のすべてをサポートし、一部はそれらの一部をサポートし、一部はまったくサポートしないことです。上記の演算子のどれがサポートされているかをクラスに認識させたいのですが、サポートされていない演算子がある場合は、コンパイル時エラーが表示されます。

例:

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

これはC#では不可能です。各アイテムの「加算」、「減算」などの方法を示すには、ある種の従来の方法または委任を使用する必要があります。

于 2013-03-06T18:52:10.880 に答える