Тернарный оператор в System :: Boolean. - PullRequest
0 голосов
/ 05 января 2012

Как использовать троичный оператор с System :: Boolean? Этот пример кода всегда возвращает true:

bool Test(Boolean^ value)
{
  return value ? true : false;
}

Ответы [ 2 ]

1 голос
/ 06 января 2012

Ваше использование System::Boolean в первую очередь неверно и не имеет ничего общего с троичным оператором. Никогда не передавайте типы значений в качестве ссылки.

Независимо от ненужных штрафов, код в вашем ответе будет работать, но не в C #. Компилятор будет жаловаться, когда вы захотите вызвать функцию bool Test(Boolean^ value). Потому что в C # нет понятия ссылочного типа значения.

0 голосов
/ 05 января 2012

Отвечая на мой преждевременный вопрос, этот код работает:

bool Test(Boolean^ value)
{
  return (bool)value ? true : false;
}

РЕДАКТИРОВАТЬ: еще лучше (и следуя советам Ганса и Мэтта), этот код работает лучше:

bool Test(Boolean value)
{
  return value ? true : false;
}

ИлиПоскольку Boolean и bool являются конвертируемыми, это также хороший код, который основан на автоматическом преобразовании, которое происходит в другом месте.Пример не имеет большого смысла, за исключением показа троичного оператора:

bool Test(bool value)
{
  return value ? true : false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...