簡體   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