2008-10-03 20 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; 
    } 

} 
相關問題