2010-04-09 13 views

Respuesta

24

Sí, esto es as documented:

[tiros] FormatException [si] el valor no es igual a TrueString o FalseString.

TrueString es "Verdadero" y FalseString es "Falso".

Si desea detectar si una cadena es "1" o no, utilizar este código:

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

Señor, probé con este código y funciona. ¿Hay alguna forma mejor de hacer esta conversión? Boolean someBool = ddlSpeechRecognition.SelectedItem.Value == "1"? verdadero Falso; – Rohit

+2

@Rohit: no es necesario usar el operador condicional. Simplemente haga 'Boolean someBool = ddlSpeechRecognition.SelectedItem.Value ==" 1 ";' –

+0

@Rohit: No es una "conversión". Compara una cadena, ddlSpeechRecognition.SelectedItem.Value, con otra, "1". Esa comparación tiene un valor booleano. –

5

depende de lo que desea. Quizás

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

asumiendo que cualquier número excepto 0 es verdadero. De lo contrario, una simple comparación funcionaría.

var result = yourstirng == "1" 
3

El parámetro debe ser igual a cualquiera de Boolean.TrueString o Boolean.FalseString. Los valores de estas cadenas son "Verdadero" y "Falso", respectivamente. Ver MSDN.

El valor de cadena "1" obviamente no es igual a "Verdadero" o "Falso".

3

El problema es que aquí está dando una cadena, no un número. Que no puede convertir la cadena "1" a la verdad, pero el int 1.

Convert.ToBoolean(1);

debería funcionar.

0

Sé que esto es viejo, pero en caso de que alguien busca ... simplemente hacer esto:

Convert.ToBoolean (Convert.ToInt16 ("1")) funciona bien. No es bonito, pero necesita ser.

0

Otra solución es utilizar un método de extensión en el objeto de cadena. Usé esta técnica en un caso en el que tuve que analizar archivos CSV que tenían diferentes cadenas que debían convertirse a valores booleanos dependiendo de su fuente y formato.

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

Esto se llama así ...

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

Si lo desea, el parámetro TrueValue podría ser una matriz de cadenas si necesita comparar varios valores (como n/a, na, ninguno) y podría agregar valores falsos si desea restringirlo o usar tipos que aceptan valores numéricos.

1

Al convertir a booleano es mejor usar su propia rutina, donde maneja todos los casos. .net Convert.ToBoolean no es una rutina práctica, es una de esas funciones donde tiene que explicar por qué no funciona.

Cuestiones relacionadas