Как преобразовать логический тип в «ON» и «OFF», используя String.Format - PullRequest
2 голосов
/ 04 января 2011

Есть ли способ конвертировать логический тип в «ON» / «OFF» с помощью строкового форматера, например:

Dim inpValue as Boolean
Dim outValue = String.Format("0:ON;OFF", inpValue)
' should show OFF as output

без кода или IFormatProvider?

Ответы [ 6 ]

8 голосов
/ 04 января 2011

Что не так с:

Dim inpValue as Boolean
Dim outValue = If(inpValue, "ON", "OFF")
4 голосов
/ 04 января 2011

Вот сумасшедший трюк из другого вопроса , но он совершенно нечитабелен. Я настоятельно советую вам не делать этого! Если у вас нервный характер, прекратите читать сейчас.

String.Format("{0:ON;ON;OFF}", CDbl(inpValue)) 

Преобразует Boolean в -1 или 0, а затем использует пользовательский числовой формат .

2 голосов
/ 04 января 2011

Нет встроенной поддержки, о которой я знаю. Однако, в зависимости от того, какой у вас контроль, вы можете создать свой собственный поставщик форматов ( IFormatProvider ). Вот ссылка на обсуждение по этому вопросу: поставщик формата bool .

2 голосов
/ 04 января 2011
1 голос
/ 04 января 2011

Вы не можете сделать это, используя String.Format (без реализации IFormatProvider , который кажется излишним для ваших целей), но вы можете сделать это в одну строку, используя IIf :

IIf(inpValue, outValue=True, outValue=False)

Лично я рекомендую использовать оператор If / Else вместо IIf, поскольку IIf не интуитивно понятен для некоторых программистов, работающих на других языках.

0 голосов
/ 04 января 2011

c # - не самый элегантный, но эффективный:

string outValue = inpValue.ToString (). Replace ("False", "OFF"). Replace ("True", "ON");

...