.NET 泛型中的运算符重载约束
使用泛型方法时,最好将接受的类型限制为具有以下类型的类型:重载特定运算符,例如减法运算符。然而,使用接口作为约束会面临限制,因为接口不支持运算符重载。
为了解决这个问题,.NET 3.5 中出现了一种解决方案,引入了一个库,可以高效、直接地访问运算符在泛型内。该库允许执行以下操作:
T result = Operator.Add(first, second); // implicit <T>; here
或者,在 C# 4.0 中,“dynamic”关键字允许动态类型,从而可以使用“”运算符添加两个类型 T 的值:
static T Add<T>(T x, T y) { dynamic dx = x, dy = y; return dx + dy; }
.NET 2.0 的另一种方法涉及为每个运算符创建一个包含方法的接口,例如as:
interface ICalc<T> { T Add(T,T)() T Subtract(T,T)() }
但是,此解决方案需要将类型显式转换为 ICalc
以上是如何限制 .NET 中的泛型类型以支持运算符重载?的详细内容。更多信息请关注PHP中文网其他相关文章!