[英]Generic constrain for bitwise operators
所以我有一個看起來像這樣的類:
public class Foo<TKey>
{
...
}
我有一個使用TKey
泛型的方法,如下所示:
public int Test(TKey val)
{
return val | 5;
}
現在我需要設置約束以確保TKey
是一個數值以便使用按位運算符。 無論如何,您不能設置約束以確保它是一個數值,因為short,int,double,...
沒有實現像INumeric
這樣的接口。
現在的問題是,這是否可能只存在約束?
泛型是關於允許地球上任何程序員可能為 T 投入的任何 Random 類。然而,數字類型實際上是一個非常靜態的列表。 我永遠不會期望程序員制作自己的數字類型。 帶有重載運算符的東西,包括二進制運算符? 也許很少。
所以這不是一個通用的案例。 如果您只為 2 種(可能是 3 種)類型編寫代碼,則應該涵蓋幾乎所有現有的泛型:
*更正:Decimal 在 64 位時具有最高的精度和最大的尺寸,而 Double 的范圍更大。 通過數量級,它本身具有數量級。
試試這個代碼:
public static int Test<TKey>(TKey val) where TKey : struct, IComparable
{
int numberValue = Convert.ToInt32(val);
return numberValue | 5;
}
這是應該工作!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.