Здесь у меня есть минимальный пример класса, который должен моделировать вектор (который будет использоваться для вычислений линейной алгебры).Он включает тип T
, который будет целочисленным или с плавающей запятой (например, int
или double
).Теперь я хотел реализовать метод CheckIfZeroAt
, который проверяет, содержит ли определенная запись ноль или нет.Проблема в том, что я хочу оставить переменную типа T
, но, насколько я знаю, я не могу сказать компилятору, что I T
- это числовой тип, для которого доступна тип-трансляция.К сожалению, также не существует интерфейса для числовых типов, которым я мог бы ограничить T
.
Есть ли какой-нибудь элегантный способ решить эту проблему?
Я включил несколько наивных способов, которыми можно попытаться реализовать этот метод в качестве комментариев, но ни один из них не работает.
class MyVector<T> // T is an integral or floating point type
{
T[] vector;
public MyVector(T[] array)
{
vector = array; //just a reference
}
public bool CheckIfZeroAt(int i)
{
// return vector[0] == (T)0; //"Cast is redundant"
// return vector[0] == 0; // Operator "==" cannot be applied to operands of type "T" and "int"
// return vector[0] == 2 * vector[0]; // Operator "*" cannot be applied to operands of type "T" and "int"
}
}