2011-08-11 63 views

Trả lời

56

Convert.ToBoolean(string) thực sự gọi bool.Parse() dù sao, vì vậy đối với số không string s, không có sự khác biệt về chức năng. (Đối với vô string s, Convert.ToBoolean() lợi nhuận false, trong khi bool.Parse() ném một ArgumentNullException.)

Cho rằng trên thực tế, bạn nên sử dụng bool.Parse() khi bạn chắc chắn rằng đầu vào của bạn không phải là null, kể từ khi bạn tiết kiệm cho mình một rỗng séc.

Convert.ToBoolean() tất nhiên có một số quá tải khác cho phép bạn tạo ra một bool từ nhiều loại built-in khác, trong khi Parse() chỉ dành cho string s.

Về phương pháp type.Parse() bạn nên tìm, tất cả các loại số được cài sẵn có các phương thức Parse() cũng như TryParse(). DateTime có các phương thức đó, cũng như các phương thức ParseExact()/TryParseExact() bổ sung, cho phép bạn chỉ định định dạng mong muốn cho ngày đó.

+1

FYI: 'TryParse()' không phải là một phần của Khung nhỏ gọn. – jp2code

+0

Cảm ơn các chi tiết. Vì vậy, không có sự khác biệt trong hiệu suất giữa hai, hoặc bạn có thể nói lợi nhuận cực kỳ nhỏ bằng cách sử dụng Boolean.Parse (chuỗi)? – mbrownnyc

+1

@mbrownnyc Bạn sẽ nhận được rất nhỏ (khả năng không thể nhận được) đạt được bằng cách sử dụng 'Parse()' * nếu bạn chắc chắn đầu vào không phải là một chuỗi rỗng *. Nếu bạn không chắc chắn, chỉ cần sử dụng 'ToBoolean()', vì nó sẽ thực hiện kiểm tra cho bạn. Và nếu bạn không muốn một chuỗi rỗng kết quả là false, sau đó thực hiện kiểm tra chính mình, và sau đó gọi là "Parse()' nếu nó không phải là null. – dlev

2

Boolean.Parse() sẽ chuyển đổi một chuỗi đại diện của một giá trị boolean logic đến một giá trị boolean. Convert.ToBoolean() có nhiều overloads sẽ chuyển đổi các kiểu nguyên thủy sang tương đương boolean của chúng.

Hầu hết, nếu không phải tất cả các kiểu nguyên thủy trong C# đều có phương thức * .Parse/Convert.To * được liên kết có cùng mục đích là Boolean.Parse()/Convert.ToBoolean().

18

Dưới đây là bản demo ngắn:

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 

Lưu ý: Ngoài ra còn có hai thuộc tính của TrueString bool và FalseString, nhưng hãy cẩn thận, bởi vì bool.TrueString = "true", chỉ bool.TrueString ==! "Đúng"

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

'Convert.ToBoolean (" 1 "); // Định dạng ngoại lệ –

Các vấn đề liên quan