Разница между Convert.ToString () и .ToString () - PullRequest
145 голосов
/ 13 мая 2010

В чем разница между Convert.ToString() и .ToString()?

Я нашел много различий в Интернете, но в чем главное отличие?

Ответы [ 16 ]

211 голосов
/ 13 мая 2010

Convert.ToString() обрабатывает null, а ToString() - нет.

59 голосов
/ 13 мая 2010

Вызов ToString() для объекта предполагает, что объект не является нулевым (поскольку объект должен существовать для вызова метода экземпляра для него). Convert.ToString(obj) не нужно предполагать, что объект не является нулевым (поскольку это статический метод в классе Convert), но вместо этого вернет String.Empty, если равно null.

20 голосов
/ 04 февраля 2014

В дополнение к другим ответам об обработке значений null, Convert.ToString пытается использовать IFormattable и IConvertible интерфейсы перед вызовом базы Object.ToString.

Пример:

class FormattableType : IFormattable
{
    private double value = 0.42;

    public string ToString(string format, IFormatProvider formatProvider)
    {
        if (formatProvider == null)
        {
            // ... using some IOC-containers
            // ... or using CultureInfo.CurrentCulture / Thread.CurrentThread.CurrentCulture
            formatProvider = CultureInfo.InvariantCulture;
        }

        // ... doing things with format
        return value.ToString(formatProvider);
    }

    public override string ToString()
    {
        return value.ToString();
    }
}

Результат:

Convert.ToString(new FormattableType()); // 0.42
new FormattableType().ToString();        // 0,42
10 голосов
/ 06 марта 2012

Давайте разберем разницу с помощью этого примера:

int i= 0;
MessageBox.Show(i.ToString());
MessageBox.Show(Convert.ToString(i));

Мы можем преобразовать целое число i, используя i.ToString () или Convert.ToString. Так в чем же разница?

Основное различие между ними заключается в том, что функция Convert обрабатывает NULLS, а i.ToString () - нет; он выдаст ошибку исключения ссылки NULL. Так как хорошая практика кодирования с использованием convert всегда безопасна.

6 голосов
/ 08 февраля 2013

Вы можете создать класс и переопределить метод toString, чтобы делать все, что вы хотите.

Например, вы можете создать класс "MyMail" и переопределить метод toString для отправки электронного письма или выполнения какой-либо другой операции вместо записи текущего объекта.

Convert.toString преобразует указанное значение в эквивалентное строковое представление.

5 голосов
/ 13 мая 2013
object o=null;
string s;
s=o.toString();
//returns a null reference exception for string  s.

string str=convert.tostring(o);
//returns an empty string for string str and does not throw an exception.,it's 
//better to use convert.tostring() for good coding
4 голосов
/ 23 августа 2015

Методы "в основном" одинаковы, за исключением обработка null .

Pen pen = null; 
Convert.ToString(pen); // No exception thrown
pen.ToString(); // Throws NullReferenceException

Из MSDN:
ПреобразоватьМетод .ToString

Преобразует указанное значение в эквивалентное строковое представление.

Object.ToString

Возвращает строку, представляющую текущий объект.

3 голосов
/ 10 апреля 2017

Я согласен с @ Райаном ответом. Кстати, начиная с C # 6.0 для этой цели вы можете использовать:

someString?.ToString() ?? string.Empty;

или

$"{someString}"; // I do not recommend this approach, although this is the most concise option.

вместо

Convert.ToString(someString);
3 голосов
/ 23 августа 2012

Для любителей кода это лучший ответ.

    .............. Un Safe code ...................................
    Try
        ' In this code we will get  "Object reference not set to an instance of an object." exception
        Dim a As Object
        a = Nothing
        a.ToString()
    Catch ex As NullReferenceException
        Response.Write(ex.Message)
    End Try


    '............... it is a safe code..............................
    Dim b As Object
    b = Nothing
    Convert.ToString(b)
3 голосов
/ 07 сентября 2011

В Convert.ToString() преобразователь обрабатывает либо значение NULL, либо нет, но в .ToString() он не обрабатывает значения NULL и NULL ошибка исключения ссылки.Таким образом, в хорошей практике используется Convert.ToString().

...