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