2010-04-09 68 views

回答

24

對,這是as documented

[拋出]出現FormatException [如果]值不等於或TrueString FalseString。

TrueString是「真」,而FalseString是「假」。

如果要檢測一個字符串是否爲「1」或沒有,使用此代碼:

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

先生,我試着用這個代碼,它的工作原理。是否有更好的方法來做這種轉換。 布爾someBool = ddlSpeechRecognition.SelectedItem.Value ==「1」?真假; – Rohit 2010-04-09 09:58:28

+2

@Rohit:不需要使用條件運算符。只要做'布爾someBool = ddlSpeechRecognition.SelectedItem.Value ==「1」;' – 2010-04-09 10:00:05

+0

@Rohit:這不是一個「轉換」。您將字符串ddlSpeechRecognition.SelectedItem.Value與另一個「1」進行比較。該比較具有布爾值。 – 2010-04-09 10:10:41

5

取決於你想要什麼。也許

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

假設任何數字,但0爲真。否則,簡單的比較就可以工作。

var result = yourstirng == "1" 
3

該參數必須等於Boolean.TrueStringBoolean.FalseString。這些字符串的值分別是「True」和「False」。見MSDN

字符串值「1」顯然不等於「真」或「假」。

3

問題是,你在這裏給一個字符串,而不是一個數字。它不能字符串 「1」 轉換爲真實的,但INT 1

Convert.ToBoolean(1);

應該工作。

0

我知道這是舊的,但如果有人搜索......簡單地做到這一點:

Convert.ToBoolean(Convert.ToInt16( 「1」))的作品就好了。不漂亮,但需要。

0

另一種解決方案是在字符串對象上使用擴展方法。我使用這種技術的情況下,我必須解析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,無),如果你想進一步限制它或使用可爲空的類型,你可以添加錯誤的值。

1

當轉換爲布爾值時,最好使用您自己的例程,您可以在其中處理所有情況。 .net Convert.ToBoolean不是一個實用的例程,它是其中一個函數,你必須要解釋爲什麼它不起作用。