WarumConvert.ToBoolean ("1") wirft System.Format Ausnahme in C#
Convert.ToBoolean("1")
eine System.FormatException
werfen?
Wie soll ich mit dieser Konvertierung fortfahren?
WarumConvert.ToBoolean ("1") wirft System.Format Ausnahme in C#
Convert.ToBoolean("1")
eine System.FormatException
werfen?
Wie soll ich mit dieser Konvertierung fortfahren?
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";
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"
Der Parameter muss entweder Boolean.TrueString
Boolean.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".
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.
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.
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.
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.
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
@Rohit: Keine Notwendigkeit, den Bedingungsoperator zu verwenden. Mach einfach 'Boolean someBool = ddlSpeechRecognition.SelectedItem.Value ==" 1 ";' –
@Rohit: Es ist keine "Umwandlung". Sie vergleichen eine Zeichenfolge, ddlSpeechRecognition.SelectedItem.Value, mit einer anderen "1". Dieser Vergleich hat einen booleschen Wert. –