Tôi chỉ gặp một số mã ghi đè ToString()
và trả về một số thông tin quan trọng (không chỉ thông tin gỡ lỗi). Người dùng loại này được gọi là ToString()
và phân tích dữ liệu quan trọng đó.Nên ToString được sử dụng cho thông tin quan trọng?
Ý kiến của tôi, từ việc đọc bit khác nhau và mảnh trong những năm qua, đó là ToString()
có khá yếu contract
, ví dụ: ghi đè lên nó (nếu bạn muốn) để hiển thị một số nội dung có ý nghĩa.
Xem Tôi đã nói hiển thị ở đó? Mã mà tôi bắt gặp dựa vào việc trình bày văn bản các thể hiện của loại này là rất cụ thể; thêm bất cứ điều gì khác ngoài những gì được mong đợi sẽ gây ra tất cả các loại vấn đề.
Vì vậy, câu hỏi của tôi là, nếu đại diện văn bản của một đối tượng là rất quan trọng, nên sử dụng ToString()
hoặc nên sử dụng phương pháp/thuộc tính rõ ràng hơn, ví dụ: AsText
?
Tôi đồng ý hoàn toàn nhưng sẽ cho rằng phương pháp ToString có thể là một ứng cử viên tốt để xuất dữ liệu văn bản miễn là đối tượng của bạn triển khai IFormattable. Có nhiều khung dữ liệu ràng buộc ra khỏi đó sẽ làm việc tốt hơn nhiều với IFormattable.ToString hơn với MyCustomTextOutputMethod() .. nhưng đó không phải để nói rằng bạn không thể có cả hai :) – MattDavey
@ MattDavey Điểm công bằng, mặc dù đó là rất nhiều khác biệt so với chỉ ghi đè phương thức 'ToString()' chuẩn. Tôi sẽ cập nhật để giải quyết rằng, mặc dù. – dlev
Vâng, điều quan trọng là nhấn mạnh sự khác biệt giữa hai phương pháp. Những gì tôi thích về IFormattable là trong mô hình thực hiện tiêu chuẩn Object.ToString của bạn defers để IFormattable.ToString ("G"), cung cấp cho bạn một con đường tiến triển tốt đẹp :) – MattDavey