Nó không phải là duy nhất. Convert.ToBoolean (char), ToDateTime, ToDecimal và ToSingle cũng không được hỗ trợ, tất cả đều ném InvalidCastException như ToDouble.
Đây chỉ là thiết kế .NET đang cố gắng giúp bạn không gặp rắc rối. Chuyển đổi một char thành một kiểu tích phân là hợp lý, bạn có thể xem các bảng ánh xạ Unicode và đếm các điểm mã (codepoint). Nhưng Boolean có nghĩa là gì? Điểm mã Unicode nào là True? ToDateTime không yêu cầu giải thích. Làm cách nào một ký tự có thể là giá trị phân đoạn? Không có một nửa hoặc một phần tư.
Bạn có thể làm cho nó hoạt động, chuyển sang Int32 trước rồi chuyển đổi thành Đôi. Nhưng bằng mọi cách, hãy kiểm tra mã của bạn và đảm bảo rằng đó là một điều ý nghĩa cần làm. Các nhà thiết kế .NET nghĩ rằng nó không phải. Họ đã đúng.
Nguồn
2012-04-25 09:43:05
Có lẽ vì nó phải là, đối với một số giao diện, IConvertible, có thể? Hoặc chỉ để giữ một tiêu chuẩn.Đừng để nó bị thiếu và tìm kiếm - nhưng nói "ở đây nó là, không sử dụng nó mặc dù" – SimpleVar
@YoryeNathan 'Convert' là một lớp tĩnh, nó không thực hiện bất kỳ giao diện nào. 'Char' thực hiện' IConvertible', và * của nó * ToDouble' là cần thiết cho điều đó, nhưng 'Convert' không cần nó. Thay thế của bạn, "để giữ một tiêu chuẩn", có thể đúng. – hvd
@hvd Bạn nói đúng. Đó là ngu ngốc của tôi. – SimpleVar