[英]Writing a generic class to handle built-in types
也许不太实用,但仍然很有趣。
对于矩阵乘法有一些抽象的问题,我迅速为整数实现了一个矩阵,然后检验了我的假设。
在这里,我注意到,如果我偶尔想将其与十进制或双精度型一起使用,那么仅使用int矩阵是不好的。 当然,我可以尝试将所有内容都加倍,但这不是方便的方法。
继续假设,我们可以拥有一堆能够相乘和相乘的对象-为什么不在矩阵中使用它们?
因此,在考虑到现在将是一个Matrix类之后,我面对无法使用通用T的问题,我需要它来支持一些可以相乘和相乘的接口。
问题是我可以在类中重写运算符,但无法引入支持运算符的接口。 我有一个内置类型的运算符,但仍然没有接口。
考虑到您不想重复工人阶级的身体,在这种情况下您会怎么做? 包装程序和隐式强制转换对我没有多大帮助,我对一个漂亮的解决方案感兴趣。
谢谢。
好吧,有一种技术含量较低的方法可以做到这一点。 您不能为“ int”或“ double”添加新接口。 但是,您可以为对象声明一个接口,该接口可以乘以某种通用类型的值并相加。 然后,您可以为所需的所有类型实现接口:
public interface ICalculator<T>
{
T Add(T x, T y);
T Multiply(T x, T y);
}
public class MatrixMultiplier<T>
{
public MatrixMultiplier(ICalculator<T> calculator) { ... }
}
public class IntCalculator : ICalculator<int>
{
public int Add(int x, int y)
{
return x + y;
}
public int Multiply(int x, int y)
{
return x * y;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.