Как я могу конвертировать из bool в int? - PullRequest
0 голосов
/ 17 декабря 2018

Мой код выглядит следующим образом:

if (Settings.adp == true)
   App.DB.UpdateIntSetting(SET.Adp, 0);
else
   App.DB.UpdateIntSetting(SET.Adp, 1);

Есть ли способ, которым я мог бы сократить это до одной строки, преобразовав bool Settings.adp в int (0 или 1)

Ответы [ 3 ]

0 голосов
/ 17 декабря 2018

С вашей обратной логикой, ответ Натаны на троичный оператор , вероятно, является лучшим вариантом для ясности, но вы также можете использовать Convert.ToInt32:

bool negatedValue = !Settings.adp;
App.DB.UpdateIntSetting(SET.Adp, Convert.ToInt32(negatedValue));

Попробуйте онлайн

0 голосов
/ 17 декабря 2018

Ваша ситуация выглядит хорошим кандидатом для использования ValueObject, при условии, что вам нужно выполнить это преобразование в int во многих местах вашего проекта.

Причина: Если вы не используетеValueObject. В конечном итоге вы продублируете эту логику для преобразования в int во всем приложении, где вам нужно это преобразование.Особенно для вашей перевернутой логики (true -> 0, false -> 1) ваша ситуация кажется еще более подходящей для использования ValueObject.Использование ValueObject поможет вам избежать этого дублирования.

0 голосов
/ 17 декабря 2018

Вы можете использовать троичный оператор, чтобы объединить его в одну строку:

App.DB.UpdateIntSetting(SET.Adp, Settings.adp ? 0 : 1);

Из документации

условие?следствие: альтернатива

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...