декремента:
"Следует учитывать, что в коде оператора не должны изменяться те объекты, которые передаются в оператор через параметры. Например, мы можем определить для класса Counter оператор инкремента:
public static Counter operator ++(Counter counter1)
{
counter1.Value += 10;
return counter1;
}
Поскольку оператор унарный, он принимает только один параметр - объект того класса, в котором данный оператор определен. Но это неправильное определение инкремента, так как оператор не должен менять значения своих параметров.
И более корректное определение оператора инкремента будет выглядеть так:
public static Counter operator ++(Counter counter1)
{
return new Counter { Value = counter1.Value + 10 };
}
То есть возвращается новый объект, который содержит в свойстве Value инкрементированное значение. При этом нам не надо определять отдельно операторы для префиксного и для постфиксного инкремента (а также декремента), так как одна реализация будет работать в обоих случаях."
Действительно ли нужно делать так, как написано во втором варианте?
int работает по 1 варианту, да и все другие численные типы
Обсуждают сегодня