2008-10-03 44 views
2

可能不太实际,但仍然有趣。编写一个通用类来处理内置类型

有上矩阵乘法一些抽象的问题,我已迅速实施了整数矩阵,然后进行测试我的假设。

在这里,我注意到,刚才INT矩阵不是很好,如果我偶尔想带小数或双使用它。当然,我可能只是试图将所有投加倍,但这不是方便的方式。

与假设继续,我们可以有一堆的对象,我们能够进行加和乘 - 为什么不我的矩阵使用它们?

所以,考虑到它将是一个矩阵类,现在我面临的泛型T不能被使用,我需要它来支持一些接口,可以添加和繁殖。

而问题是,我可以在我的课覆盖的运营商,但我不能介绍这将支持运营商的接口。我有一个内置类型的运算符,但仍然没有接口。

,你会在这种情况下做什么考虑,你不想重复工人阶级的身体吗?包装和隐式投射对我没有多大帮助,我对一个美丽的解决方案感兴趣。

谢谢。

回答

5

为此,您需要通用的数学。幸运的是I have done this。用法与此“复杂”(即x + iy)example类似。 操作员类现在是MiscUtil的一部分。

+0

典型的...我看到一个贴子我可以回答你引用的工作,而你在这里第一次拿到;) – 2008-10-03 11:36:47

2

那么,有一种技术不太重的方式来做到这一点。您无法为“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; 
    } 

} 
相关问题