Разница между Convert.ToString() и .ToString()

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

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

Ответ 1

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

Ответ 2

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

Ответ 3

В дополнение к другим ответам об обработке значений 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

Ответ 4

Давайте рассмотрим разницу в этом примере:

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

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

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

Ответ 5

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

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

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

Ответ 6

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 
//better to use convert.tostring() for good coding

Ответ 7

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

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

От MSDN:
Метод Convert.ToString

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

Object.ToString

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

Ответ 8

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

Ответ 9

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

    .............. 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)

Ответ 10

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

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

или

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

вместо

Convert.ToString(someString);

Ответ 11

ToString() не может обрабатывать нулевые значения, а convert.ToString() может обрабатывать значения, которые являются нулевыми, поэтому, когда вы хотите, чтобы ваша система обрабатывала нулевое значение, используйте convert.ToString().

Ответ 12

Convert.ToString(strName) будет обрабатывать нулевые значения, а strName.Tostring() не будет обрабатывать значение NULL и вызывать исключение.

Итак, лучше использовать Convert.ToString(), затем .ToString();

Ответ 13

ToString() Vs Convert.ToString()

Сходства: -

Оба используются для преобразования определенного типа в строку i.e int в строку, float в строку или объект в строку.

Разница: -

ToString() не может обрабатывать значение null, а в случае, если Convert.ToString() будет обрабатывать нулевое значение.

Пример:

namespace Marcus
{
    class Employee
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }
    class Startup
    {
        public static void Main()
        {
            Employee e = new Employee();
            e = null;

            string s = e.ToString(); // This will throw an null exception
            s = Convert.ToString(e); // This will throw null exception but it will be automatically handled by Convert.ToString() and exception will not be shown on command window.
        }
    }
}

Ответ 14

Чтобы понять оба метода, давайте возьмем пример:

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

Здесь оба метода используются для преобразования строки, но основное различие между ними заключается в следующем: функция Convert обрабатывает NULL, в то время как i.ToString() этого не делает, поэтому выбрасывает NULL reference exception error. Так что хорошая практика кодирования с использованием convert всегда в безопасности.

Давайте посмотрим на другой пример:

string s;
object o = null;
s = o.ToString(); 
//returns a null reference exception for s. 

string s;
object o = null;
s = Convert.ToString(o); 
//returns an empty string for s and does not throw an exception.

Ответ 15

Convert.ToString(value) сначала пытается привести obj к IConvertible, затем IFormattable, чтобы вызвать соответствующие методы ToString(...). Если вместо этого значение параметра было null, верните string.Empty. В крайнем случае верните obj.ToString(), если больше ничего не помогло.

Стоит отметить, что Convert.ToString(value) может вернуть null, если, например, value.ToString() вернет ноль.

См. .Net справочный источник

Ответ 16

я написал этот код и скомпилировал его.

class Program
{
    static void Main(string[] args)
    {
        int a = 1;
        Console.WriteLine(a.ToString());
        Console.WriteLine(Convert.ToString(a));
    }
}

с помощью "обратного инжиниринга" (ilspy) я выясняю, что object.ToString() и Convert.ToString(obj) делают только одно. на самом деле 'Convert.ToString(obj)' вызывает 'object.ToString()', поэтому 'object.ToString()' быстрее.

Object.ToString Method:

class System.Object
{
    public string ToString(IFormatProvider provider)
    {
        return Number.FormatInt32(this, null, NumberFormatInfo.GetInstance(provider));
    }
}

Conver.ToString Method:

class System.Convert
{
    public static string ToString(object value)
    {
        return value.ToString(CultureInfo.CurrentCulture);
    }
}

Ответ 17

Функция Convert.Tostring() обрабатывает NULL, а метод .ToString() - нет. посетите здесь.