2011-08-11 81 views

回答

56

Convert.ToBoolean(string)無論如何實際上都會調用bool.Parse(),所以對於非空string s,沒有功能差異。 (對於空string S,Convert.ToBoolean()回報false,而bool.Parse()拋出ArgumentNullException

鑑於這一事實,你應該使用bool.Parse()當你確信你的輸入不爲空,因爲您可以節省一個空檢查。

當然Convert.ToBoolean()有許多重載,讓你產生許多其他內置類型一bool的,而Parse()僅用於string秒。

對於type.Parse()方法,您應該注意,所有內置的數字類型都有Parse()以及TryParse()方法。 DateTime具有這些方法以及其他方法,這些方法允許您指定日期的預期格式。

+1

僅供參考:'TryParse()'不是Compact Framework的一部分。 – jp2code

+0

感謝您的詳細信息。那麼,兩者之間的表現沒有什麼不同,或者你可以說使用Boolean.Parse(字符串)的極小增益? – mbrownnyc

+1

@mbrownnyc如果您確定輸入不是空字符串*,那麼您將通過使用'Parse()'*獲得非常小的(可能無法察覺的)增益。如果你不確定,只需使用'ToBoolean()',因爲它會爲你做檢查。如果你不想讓一個空字符串導致false,那麼執行檢查你自己,然後調用'Parse()'如果它不爲空。 – dlev

2

Boolean.Parse()將邏輯布爾值的字符串表示形式轉換爲布爾值。 Convert.ToBoolean()有多個overloads,它們將原始類型轉換爲它們的布爾等值。

C#中的大部分(如果不是全部)基元類型都有一個關聯的* .Parse/Convert.To *方法,它們的用途與Boolean.Parse()/Convert.ToBoolean()相同。

18

這裏是簡短的演示:

object ex1 = "True"; 
Console.WriteLine(Convert.ToBoolean(ex1)); // True 
Console.WriteLine(bool.Parse(ex1.ToString())); // True 

object ex2 = "true"; 
Console.WriteLine(Convert.ToBoolean(ex2)); // True 
Console.WriteLine(bool.Parse(ex2.ToString())); // True 

object ex3 = 1; 
Console.WriteLine(Convert.ToBoolean(ex3)); // True 
Console.WriteLine(bool.Parse(ex3.ToString())); // Unhandled Exception: System.FormatException 

object ex3 = "1"; 
Console.WriteLine(Convert.ToBoolean(ex3)); // An unhandled exception of type 'System.FormatException' occurred 
Console.WriteLine(bool.Parse(ex3.ToString())); // Unhandled Exception: System.FormatException 

object ex4 = "False"; 
Console.WriteLine(Convert.ToBoolean(ex4)); // False 
Console.WriteLine(bool.Parse(ex4.ToString())); // False 

object ex5 = "false"; 
Console.WriteLine(Convert.ToBoolean(ex5)); // False 
Console.WriteLine(bool.Parse(ex5.ToString())); // False 

object ex6 = 0; 
Console.WriteLine(Convert.ToBoolean(ex6)); // False 
Console.WriteLine(bool.Parse(ex6.ToString())); // Unhandled Exception: System.FormatException 

object ex7 = null; 
Console.WriteLine(Convert.ToBoolean(ex7)); // False 
Console.WriteLine(bool.Parse(ex7.ToString())); // Unhandled Exception: System.NullReferenceException 

注:也有布爾TrueString和FalseString的兩個屬性,但要小心,因爲bool.TrueString = 「真」,只有bool.TrueString ==! 「True」

Console.WriteLine(bool.TrueString); // True 
Console.WriteLine(bool.FalseString); // False 
+1

'Convert.ToBoolean(「1」); //格式異常' –

相關問題