Sự khác biệt giữa hai phương pháp là gì
Convert.ToBoolean()
và
Boolean.Parse()
?
Có lý do gì để sử dụng cái này hay cái kia không?
Ngoài ra, có bất kỳ type.Parse()
phương pháp nào khác mà tôi nên theo dõi không?
Cảm ơn,
Matt
Câu trả lời:
Convert.ToBoolean(string)
thực sự bool.Parse()
vẫn gọi , vì vậy đối với các không null string
, không có sự khác biệt về chức năng. (Đối với null string
s, Convert.ToBoolean()
trả về false
, trong khi bool.Parse()
ném ArgumentNullException
.)
Với thực tế đó, bạn nên sử dụng bool.Parse()
khi bạn chắc chắn rằng thông tin đầu vào của bạn không phải là giá trị rỗng, vì bạn đã lưu cho mình một kiểm tra rỗng.
Convert.ToBoolean()
tất nhiên có một số quá tải khác cho phép bạn tạo một bool
từ nhiều kiểu tích hợp khác, trong khi Parse()
chỉ dành cho string
s.
Về phương thức type.Parse () mà bạn nên chú ý, tất cả các kiểu số tích hợp sẵn đều có Parse()
cũng như TryParse()
các phương thức. DateTime
có những cái đó, cũng như các phương thức ParseExact()
/ bổ sung TryParseExact()
, cho phép bạn chỉ định một định dạng dự kiến cho ngày.
Parse()
nếu bạn chắc chắn đầu vào không phải là chuỗi rỗng . Nếu bạn không chắc chắn, chỉ cần sử dụng ToBoolean()
, vì nó sẽ kiểm tra cho bạn. Và nếu bạn không muốn một chuỗi null dẫn đến sai, thì hãy tự mình thực hiện kiểm tra, rồi gọi Parse()
nếu nó không phải là null.
Đâ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 ý: Cũng có hai thuộc tính bool
TrueString và FalseString, nhưng hãy cẩn thận, bởi vì bool.TrueString != "true"
, chỉbool.TrueString == "True"
Console.WriteLine(bool.TrueString); // True
Console.WriteLine(bool.FalseString); // False
Convert.ToBoolean("1"); // Format Exception
Boolean.Parse()
sẽ chuyển đổi một biểu diễn chuỗi của một giá trị boolean logic thành một giá trị boolean. Convert.ToBoolean()
có nhiều quá tải sẽ chuyển đổi các kiểu nguyên thủy thành boolean tương đương 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 # có một phương thức * .Parse / Convert.To * được liên kết phục vụ cùng một mục đích như Boolean.Parse()/Convert.ToBoolean()
.