2011-01-03 12 views
2

Gibt es verwendet, ist eine Möglichkeit, Typen Boolean in zu umwandeln" Boolean-Typen in "ON" "OFF zu konvertieren ON"/"OFF", wie:Wie "String.Format

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

ohne Code oder IFormatProvider?

Antwort

1

Sie können diese mit String.Format nicht tun (ohne IFormatProvider Implementierung, die für Ihre Zwecke wie ein Overkill scheint), aber man kann es in einer Zeile tun mit IIf:

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

Ich persönlich empfehlen Verwenden einer If/Else-Anweisung anstelle von IIf, da IIf für einige Programmierer, die aus anderen Sprachen kommen, nicht intuitiv ist.

2

Es gibt keinen integrierten Unterstützung ist, dass ich bewusst bin. Je nachdem, wie viel Kontrolle Sie haben, können Sie jedoch Ihren eigenen Formatanbieter erstellen (IFormatProvider). Hier ist ein Link zu einer Diskussion dazu: bool format provider.

7

Was ist falsch an:

Dim inpValue as Boolean 
Dim outValue = If(inpValue, "ON", "OFF") 
+3

Nichts natürlich. +1 für eine Stimme der Vernunft. –

+0

+1 für Einfachheit –

0

C# - nicht das eleganteste, aber effektiv:

String outValue = inpValue.ToString() Ersetzen ("False", "OFF") ersetzen.. ("Wahr", "EIN");

+1

Meine Augen bluten! String Manipulation ist eine sehr schlechte Implementierung der Logik. –

+0

Kein Zweifel (wie ich zugegeben habe). Entschuldige deine Augen! – nycdan

+0

Das C# -Aquivalent von VBs IIf: var outValue = inpValue? "AN AUS"; –

3

Hier ist ein verrückter Trick von another question, aber es ist völlig unlesbar. Ich rate Ihnen dringend, dies nicht zu tun! Wenn Sie nervös sind, hören Sie jetzt auf zu lesen.

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

Dieser wandelt die Boolean zu -1 oder 0 und dann ein custom numeric format verwendet.