Учитывая общее определение класса, например
public class ConstrainedNumber<T> :
IEquatable<ConstrainedNumber<T>>,
IEquatable<T>,
IComparable<ConstrainedNumber<T>>,
IComparable<T>,
IComparable where T:struct, IComparable, IComparable<T>, IEquatable<T>
Как я могу определить для него арифметические операторы?
Следующее не компилируется, потому что оператор «+» нельзя применить к типам «T» и «T»:
public static T operator +( ConstrainedNumber<T> x, ConstrainedNumber<T> y)
{
return x._value + y._value;
}
Общий тип 'T' ограничен ключевым словом 'where', как вы можете видеть, но мне нужно ограничение для числовых типов, которые имеют арифметические операторы (IArithmetic?).
'T' будет примитивным типом чисел, таким как int, float и т. Д. Есть ли ограничение «где» для таких типов?