[英]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.