2011-09-03 70 views
7

thể trùng lặp:
variable.ToString() vs. Convert.ToString(variable)Sự khác nhau giữa Convert.ToString() và .ToString() trong C#?

sự khác biệt giữa Convert.ToString() và ToString() trong C# là gì?

Khi tôi thử và chuyển đổi dataRow[i] thành chuỗi bằng ToString() thì tôi nhận được lỗi. Làm thế nào để sửa lỗi này?

+0

loại dr [0] là gì? –

+0

Theo như tôi biết, không tồn tại 'Tostring()' hay 'tostring()'. C# phân biệt chữ hoa chữ thường; bạn đang đề cập đến 'ToString', hay bạn có một số hàm do người dùng định nghĩa khác? Hiển thị cho chúng tôi mã nguồn của bạn gây ra lỗi và hiển thị lỗi cho chúng tôi. –

+0

Cũng có thể có "vấn đề" của 'DbNull' (không phải là' null'); và có thể bạn có thể cần sử dụng 'IsNull (col)' nếu không thì chỉ mục ('[col]') có thể bị lỗi IIRC. Trong mọi trường hợp, * vui lòng bao gồm * thông tin có liên quan: "nhận được lỗi" cũng hữu ích như "không hoạt động". –

Trả lời

8

Có sự khác biệt đơn giản nhưng quan trọng giữa chúng ...

ToString() nâng cao ngoại lệ khi đối tượng là null

Vì vậy, trong trường hợp của Object.ToString(), nếu đối tượng là null, nó nâng cao Ngoại lệ tham khảo.

Convert.ToString() trả string.Empty trong trường hợp đối tượng null

(string) đúc gán đối tượng trong trường hợp null

Vì vậy, trong trường hợp của MyObject o = (string) NullObject;

Nhưng khi bạn sử dụng o để truy cập bất kỳ thuộc tính nào, nó sẽ tăng NullReferenceException.

http://maniish.wordpress.com/2007/10/08/difference-between-tostring-vs-converttostring-vs-string-cast/

15

Về cơ bản cả hai được sử dụng để chuyển đổi một giá trị cho một String nhưng có một sự khác biệt cơ bản giữa chúng:

Khi chúng ta có một đối tượng NULL, Convert.ToString(Object); xử lý các giá trị NULL trong khi Object.ToString(); không xử lý giá trị NULL và nó ném ngoại lệ tham chiếu NULL.

7

Đầu tiên, Object.ToString() là một hàm ảo trong đối tượng lớp cơ sở. Bất kỳ lớp nào cũng có thể ghi đè lên ToString() để cung cấp việc thực hiện riêng của nó. Convert.ToString() là một phương thức tĩnh cố gắng thực hiện nhiều đối số khác nhau và chuyển chúng thành một chuỗi có ý nghĩa. Ngoài ra, Object.ToString() sẽ thất bại nếu đối tượng gọi nó là null.

Ngoài ra, Object.ToString() không phải lúc nào cũng chuyển đổi đối tượng thành dạng chuỗi mà bạn có thể mong đợi. Ví dụ, hàm cơ sở Object.ToString() sẽ luôn trả về tên kiểu đầy đủ của đối tượng. Bất kỳ lớp nào có thể thực hiện ToString() tuy nhiên nó mong muốn và điều này không nhất thiết phải là một cái gì đó có ý nghĩa.

1

Có sự khác biệt cơ bản giữa Convert.ToString và .Tostring. Convert.ToString sẽ xử lý ngoại lệ Null nhưng .Tostring sẽ ném lỗi

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