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

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

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

Ответы [ 16 ]

2 голосов
/ 19 сентября 2016
ToString() Vs Convert.ToString()

Сходства: -

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

Разница: -

ToString() не может обработать ноль, в то время как в случае 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.
        }
    }
}
2 голосов
/ 12 апреля 2016

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

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

2 голосов
/ 05 января 2015

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

0 голосов
/ 27 ноября 2018

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

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) 'делай ровно одну вещь.infact 'Convert.ToString (obj)' вызывает 'object.ToString ()', поэтому 'object.ToString ()' быстрее.

Метод Object.ToString:

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

Метод Conver.ToString :

class System.Convert
{
    public static string ToString(object value)
    {
        return value.ToString(CultureInfo.CurrentCulture);
    }
}
0 голосов
/ 26 ноября 2018

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

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

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

.
0 голосов
/ 26 ноября 2018

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

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