Как установить значение лямбда, если эта функция не вызывать - PullRequest
0 голосов
/ 13 июня 2018

Мой код похож на это:

 public decimal Count { get; set; } 
 public decimal PriceWithoutVat { get; set; }
 public decimal AmountWithoutVat => Count * PriceWithoutVat;

, но я хочу, чтобы AmountWithoutVat можно было установить так:

  • Если я не установлю AmountWithoutVat, AmountWithoutVat - это Count * PriceWithoutVat

  • Если я установлю AmountWithoutVat, то новое значение будет сохранено и использовано.

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Если вы не используете c#7, вы можете сделать это «старым» способом:

private decimal? amountWithoutVat;
public decimal AmountWithoutVat
{
    get { return amountWithoutVat ?? Count * PriceWithoutVat; }
    set { amountWithoutVat = value; }
}
0 голосов
/ 13 июня 2018

Ну, вы не можете сделать это (по крайней мере для свойства с синтаксисом =>, так как он доступен только для чтения)

Вы можете добавить локальное поле, допускающее обнуление, и использовать оператор слияния нуль, чтобы вернуть что-то другое, еслиэто нуль:

private decimal? _ammountWithoutVat;

public decimal AmmountWithoutVat 
{ 
   get => _ammountWithoutVat ?? Count * PriceWithoutVat;
   set => _ammountWithoutVat = value;
}

PS

Как любезно заметил Тим Шмельтер: «Операторы набора свойств являются функцией C # 7»

В более старых версиях C # выможно использовать:

public decimal AmmountWithoutVat 
{ 
    get { return _ammountWithoutVat ?? Count * PriceWithoutVat; }
    set { _ammountWithoutVat = value; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...