2010-04-09 7 views

risposta

24

Sì, questo è as documented:

[getta] Valore FormatException [se] non è uguale a TrueString o FalseString.

TrueString è "Vero" e FalseString è "Falso".

Se si vuole rilevare se una stringa è "1" o no, di questo codice:

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

signore, ho provato con questo codice e funziona. C'è un modo migliore per fare questa conversione. Booleano someBool = ddlSpeechRecognition.SelectedItem.Value == "1"? vero falso; – Rohit

+2

@Rohit: non è necessario utilizzare l'operatore condizionale. Basta 'Boolean someBool = ddlSpeechRecognition.SelectedItem.Value ==" 1 ";' –

+0

@Rohit: non è una "conversione". Confrontate una stringa, ddlSpeechRecognition.SelectedItem.Value, con un'altra, "1". Quel confronto ha un valore booleano. –

5

Dipende da quello che vuoi. Forse

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

assumendo qualsiasi numero tranne 0 è vero. Altrimenti funzionerebbe un semplice confronto.

var result = yourstirng == "1" 
3

Il parametro deve essere pari o Boolean.TrueString o Boolean.FalseString. I valori di queste stringhe sono "True" e "False", rispettivamente. Vedi MSDN.

Il valore di stringa "1" non è ovviamente uguale a "Vero" o "Falso".

3

Il problema è che stai dando una stringa qui, non un numero. Cant convertire la stringa "1" per vero, ma l'int 1.

Convert.ToBoolean(1);

dovrebbe funzionare.

0

So che questo è vecchio, ma nel caso in cui qualcuno cerca ... semplicemente fare questo:

Convert.ToBoolean (Convert.ToInt16 ("1")) funziona bene. Non carino, ma deve essere.

0

Un'altra soluzione consiste nell'utilizzare un metodo di estensione sull'oggetto stringa. Ho usato questa tecnica in un caso in cui ho dovuto analizzare i file CSV con stringhe diverse che dovevano essere convertite in valori booleani a seconda della loro origine e formato.

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

Questo sarebbe stato chiamato in questo modo ...

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

Se si desidera, il parametro TrueValue potrebbe essere una matrice di stringhe se è necessario confrontare i valori multipli (come n/a, na, nessuno) e potresti aggiungere valori falsi se vuoi restringerlo ulteriormente o utilizzare tipi nullable.

1

Durante la conversione in booleano è preferibile utilizzare la propria routine, in cui vengono gestiti tutti i casi. .net Convert.ToBoolean non è una routine pratica, è una di quelle funzioni in cui è necessario spiegare perché non funziona.