У меня есть такая структура.Использование C#, как я могу перегрузить все операторы сразу?
public struct Money
{
private readonly decimal _quantity;
private Money(decimal qty)
{
_quantity = Math.Round(qty, 2);
}
public static implicit operator Money(decimal dec)
{
return new Money(dec);
}
}
Для Money
я должен перегружать все операторы +, -, <, < =,>,> =, ==, = и т.д.!? Или есть способ принять всех операторов decimal
для Money
? Как видите, Money
имеет только одно поле, которое равно _quantity
. Я хочу, чтобы все операторы, запрошенные для Money
, возвращались так, как будто его запрашивали _quantity.
Возможно, перегрузка ниже неявного оператора преобразования решит проблему.
public static implicit operator decimal(Money money)
{
return money._quantity;
}
Я создаю Money
-структуру, потому что я не хочу использовать decimal
во всем моем проекте. Компилятор должен заставить меня использовать Money
вместо decimal
. Если я неявно использую оператор преобразования, это противоречит основанию создания этой структуры. Спасибо заранее ...
Благодарим за ответ Дмитрия. Но мои методы перегрузки оператора уже имеют структуру 'return left._quantity right._quantity'. Если C# поддерживает общие операторы, а также общие типы, тогда у моего вопроса будет ответ. –
serdar
@serdar: Да, отсутствие оператора «<=>» (который может комбинировать все сравнения) и числового типа (для реализации арифметики) иногда раздражает. –