PerchéConvert.ToBoolean ("1") getta System.Format delle eccezioni in C#
Convert.ToBoolean("1")
gettare un System.FormatException
?
Come devo procedere con questa conversione?
PerchéConvert.ToBoolean ("1") getta System.Format delle eccezioni in C#
Convert.ToBoolean("1")
gettare un System.FormatException
?
Come devo procedere con questa conversione?
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";
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"
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".
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.
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.
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.
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.
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
@Rohit: non è necessario utilizzare l'operatore condizionale. Basta 'Boolean someBool = ddlSpeechRecognition.SelectedItem.Value ==" 1 ";' –
@Rohit: non è una "conversione". Confrontate una stringa, ddlSpeechRecognition.SelectedItem.Value, con un'altra, "1". Quel confronto ha un valore booleano. –