2010-04-09 5 views

Antwort

24

Ja, das as documented:

[wirft] Format [wenn] Wert TrueString oder FalseString nicht gleich ist.

TrueString ist "True" und FalseString ist "False".

Wenn Sie ermitteln möchten, ob eine Zeichenfolge „1“ ist oder nicht, verwenden Sie diesen Code:

bool foo = text == "1"; 
+0

Herr, ich habe versucht mit diesem Code und es funktioniert.Ist es eine bessere Möglichkeit, diese Konvertierung zu tun. Boolean someBool = ddlSpeechRecognition.SelectedItem.Value == "1"? wahr falsch; – Rohit

+2

@Rohit: Keine Notwendigkeit, den Bedingungsoperator zu verwenden. Mach einfach 'Boolean someBool = ddlSpeechRecognition.SelectedItem.Value ==" 1 ";' –

+0

@Rohit: Es ist keine "Umwandlung". Sie vergleichen eine Zeichenfolge, ddlSpeechRecognition.SelectedItem.Value, mit einer anderen "1". Dieser Vergleich hat einen booleschen Wert. –

5

Hängt davon ab, was Sie wollen. Vielleicht

var result = Convert.ToInt32(yourstirng) != 0 

vorausgesetzt, eine beliebige Zahl, aber 0 ist wahr. Ansonsten würde ein einfacher Vergleich funktionieren.

var result = yourstirng == "1" 
3

Der Parameter muss entweder Boolean.TrueStringBoolean.FalseString oder gleich sein. Die Werte dieser Strings sind "True" bzw. "False". Siehe MSDN.

Der String-Wert "1" ist offensichtlich nicht gleich "True" oder "False".

3

Das Problem ist, dass du hier einen String gibst, keine Nummer. Es kann nicht den String "1" auf true konvertieren, aber die int 1.

Convert.ToBoolean(1);

funktionieren sollte.

0

Ich weiß, das alt ist, aber falls jemand sucht ... einfach dies tun:

Convert.ToBoolean (Convert.ToInt16 ("1")) funktioniert gut. Nicht schön, aber muss sein.

0

Eine andere Lösung besteht darin, eine Erweiterungsmethode für das Zeichenfolgenobjekt zu verwenden. Ich habe diese Technik in einem Fall verwendet, in dem ich CSV-Dateien analysieren musste, die unterschiedliche Zeichenfolgen hatten, die je nach Quelle und Format in boolesche Werte konvertiert werden mussten.

public static class StringExtensions 
{ 
    public static bool ToBool(this string value,string trueValue) 
    { 
     if (value == trueValue) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 
} 

Dies würde wie so genannt werden ...

MyProperty = CsvColumn[6].ToBool("1"); 

Wenn Sie möchten, dass die Truevalue Parameter ein String-Array sein könnte, wenn man (wie n mehrere Werte vergleichen benötigt/a, na, none) und Sie könnten falsche Werte hinzufügen, wenn Sie diese weiter einschränken oder NULL-Werte verwenden möchten.

1

Bei der Umwandlung in Boolean verwenden Sie am besten Ihre eigene Routine, in der Sie alle Fälle behandeln. .net Convert.ToBoolean ist keine praktische Routine, es ist eine dieser Funktionen, wo Sie erklären müssen warum es nicht funktioniert.