是什麼,兩種方法Convert.ToBoolean(string)和Boolean.Parse(string)有什麼區別?
Convert.ToBoolean()
和
Boolean.Parse()
之間的區別?
是否有任何理由使用其中之一?
此外,有沒有其他type.Parse()
我應該注意的方法?
感謝,
馬特
是什麼,兩種方法Convert.ToBoolean(string)和Boolean.Parse(string)有什麼區別?
Convert.ToBoolean()
和
Boolean.Parse()
之間的區別?
是否有任何理由使用其中之一?
此外,有沒有其他type.Parse()
我應該注意的方法?
感謝,
馬特
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
具有這些方法以及其他方法,這些方法允許您指定日期的預期格式。
Boolean.Parse()
將邏輯布爾值的字符串表示形式轉換爲布爾值。 Convert.ToBoolean()
有多個overloads,它們將原始類型轉換爲它們的布爾等值。
C#中的大部分(如果不是全部)基元類型都有一個關聯的* .Parse/Convert.To *方法,它們的用途與Boolean.Parse()/Convert.ToBoolean()
相同。
這裏是簡短的演示:
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
'Convert.ToBoolean(「1」); //格式異常' –
僅供參考:'TryParse()'不是Compact Framework的一部分。 – jp2code
感謝您的詳細信息。那麼,兩者之間的表現沒有什麼不同,或者你可以說使用Boolean.Parse(字符串)的極小增益? – mbrownnyc
@mbrownnyc如果您確定輸入不是空字符串*,那麼您將通過使用'Parse()'*獲得非常小的(可能無法察覺的)增益。如果你不確定,只需使用'ToBoolean()',因爲它會爲你做檢查。如果你不想讓一個空字符串導致false,那麼執行檢查你自己,然後調用'Parse()'如果它不爲空。 – dlev