爲什麼Convert.ToBoolean( 「1」)拋出System.Format異常在C#
Convert.ToBoolean("1")
拋出System.FormatException
?
我該如何繼續進行此轉換?
爲什麼Convert.ToBoolean( 「1」)拋出System.Format異常在C#
Convert.ToBoolean("1")
拋出System.FormatException
?
我該如何繼續進行此轉換?
對,這是as documented:
[拋出]出現FormatException [如果]值不等於或TrueString FalseString。
TrueString
是「真」,而FalseString
是「假」。
如果要檢測一個字符串是否爲「1」或沒有,使用此代碼:
bool foo = text == "1";
取決於你想要什麼。也許
var result = Convert.ToInt32(yourstirng) != 0
假設任何數字,但0爲真。否則,簡單的比較就可以工作。
var result = yourstirng == "1"
該參數必須等於Boolean.TrueString
或Boolean.FalseString
。這些字符串的值分別是「True」和「False」。見MSDN。
字符串值「1」顯然不等於「真」或「假」。
問題是,你在這裏給一個字符串,而不是一個數字。它不能字符串 「1」 轉換爲真實的,但INT 1
Convert.ToBoolean(1);
應該工作。
我知道這是舊的,但如果有人搜索......簡單地做到這一點:
Convert.ToBoolean(Convert.ToInt16( 「1」))的作品就好了。不漂亮,但需要。
另一種解決方案是在字符串對象上使用擴展方法。我使用這種技術的情況下,我必須解析CSV文件,這些文件具有不同的字符串,必須根據其源和格式將其轉換爲布爾值。
public static class StringExtensions
{
public static bool ToBool(this string value,string trueValue)
{
if (value == trueValue)
{
return true;
}
else
{
return false;
}
}
}
這被稱爲是這樣的...
MyProperty = CsvColumn[6].ToBool("1");
如果你想,在truevalue參數可以是一個字符串數組,如果你需要比較多個值(例如N/A,NA,無),如果你想進一步限制它或使用可爲空的類型,你可以添加錯誤的值。
當轉換爲布爾值時,最好使用您自己的例程,您可以在其中處理所有情況。 .net Convert.ToBoolean不是一個實用的例程,它是其中一個函數,你必須要解釋爲什麼它不起作用。
先生,我試着用這個代碼,它的工作原理。是否有更好的方法來做這種轉換。 布爾someBool = ddlSpeechRecognition.SelectedItem.Value ==「1」?真假; – Rohit 2010-04-09 09:58:28
@Rohit:不需要使用條件運算符。只要做'布爾someBool = ddlSpeechRecognition.SelectedItem.Value ==「1」;' – 2010-04-09 10:00:05
@Rohit:這不是一個「轉換」。您將字符串ddlSpeechRecognition.SelectedItem.Value與另一個「1」進行比較。該比較具有布爾值。 – 2010-04-09 10:10:41