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