2012-04-09 39 views
6

Thỉnh thoảng khi tôi gọi phương thức .ToString() của lớp, nó trả về tên đầy đủ của lớp. Nhưng đối với một số lớp/struct's (như Int32) nó trả về một chuỗi correspoding cho đối tượng (giá trị của số nguyên). Điều này có nghĩa là lớp Int32 ghi đè phương thức ToString() và các lớp trả về tên đủ điều kiện không ghi đè lên tên đó, nhưng thay vào đó chỉ cần gọi phương thức của cơ sở là (Object)? Việc triển khai Object.ToString() có trả lại tên đầy đủ của lớp không?Phương thức .ToString() hoạt động như thế nào?

+6

Có, bạn đã đúng. – MarcinJuraszek

+0

Câu hỏi là gì? Có phải là "sự hiểu biết của tôi có đúng không?"? –

Trả lời

17

Đôi khi tôi gọi phương thức ToString nó sẽ trả về tên đầy đủ của các loại thời gian chạy của đối tượng đã nhận được cuộc gọi.

Đúng.

Nhưng đối với một số loại, chẳng hạn như System.Int32, ToString trả về giá trị của người nhận được chuyển đổi thành chuỗi.

Đúng.

Cấu trúc System.Int32 có ghi đè phương pháp ToString không?

Có.

Do loại khác mà ToString phương pháp trả lại loại tên đầy đủ trình độ không override ToString?

Đó có thể là trường hợp, có. Tất nhiên, họ có thể ghi đè lên phương thức và có phương thức ghi đè thực hiện chính xác điều tương tự như phương thức lớp cơ sở, nhưng điều đó sẽ là một chút vô nghĩa.

Vì vậy, trong những trường hợp đó, gọi ToString chỉ gọi thi System.Object của ToString, mà trả về tên đầy đủ?

Đúng.

Bạn dường như nắm vững cách hoạt động của tính năng này. Chỉnh sửa duy nhất của tôi là lưu ý rằng System.Int32struct, không phải là lớp.

+0

Tôi đã chỉnh sửa ngay bây giờ nhờ – deen

+5

@Ala: Bạn có hỏi tôi tại sao một người nào đó đã downvoted câu hỏi của bạn không? Có lẽ vì nó được trả lời ** trên trang tài liệu cho phương thức ToString **. Nếu bạn có câu hỏi về phương pháp, hãy thử đọc tài liệu về phương pháp đó; nếu nó không trả lời câu hỏi của bạn thì hãy thử tìm kiếm trên web hoặc trang web này để có câu trả lời. Thay vì yêu cầu mọi người dành thời gian trong ngày bận rộn của họ để trả lời câu hỏi của bạn, hãy tự mình làm một mức nghiên cứu cơ bản, tối thiểu trước tiên. –

+0

Tôi không hiểu bạn. Bạn trả lời từng dòng đúng không? Đây là câu trả lời tôi mong đợi – deen

8

Bạn thậm chí đã cố tìm kiếm câu trả lời cho câu hỏi của mình chưa?

http://msdn.microsoft.com/en-us/library/system.object.tostring.aspx

ToString là phương pháp định dạng lớn trong .NET Framework. Nó chuyển đổi một đối tượng thành biểu diễn chuỗi của nó sao cho nó phù hợp để hiển thị. (Để biết thông tin về định dạng hỗ trợ trong .NET Framework , xem Định dạng các loại.)

Việc thực hiện mặc định của phương pháp ToString trả về tên đầy đủ trình độ của các loại đối tượng, như ví dụ sau chương trình.

Vì đối tượng là lớp cơ sở của tất cả các loại tham chiếu trong .NET Framework, hành vi này được kế thừa bởi các loại tham chiếu không ghi đè phương thức ToString. Ví dụ sau đây minh họa điều này. Nó định nghĩa một lớp có tên là Object1 chấp nhận thực thi mặc định của tất cả các thành viên đối tượng. Phương thức ToString của nó trả về tên loại hoàn toàn đủ điều kiện của đối tượng .

0

Ít điểm liên quan đến phương thức ToString() trong C#.

  1. Phương thức ToString() được định nghĩa trong lớp System.Object cơ sở và do đó có sẵn cho tất cả các loại và thông số sử dụng.

  2. Việc triển khai mặc định ToString() do lớp cơ sở system.object cung cấp sẽ cung cấp cho bạn tên đầy đủ của loại bao gồm không gian tên.

  3. Nếu bạn không muốn triển khai mặc định, thì bạn có thể ghi đè phương thức ToString(). Có ToString() phương pháp là overridable. Và bạn ghi đè nó ở đâu? Bạn ghi đè lên nó trong lớp mà bạn không muốn thực hiện mặc định của nó.

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