13 ответов:
вызов
ToString()на объекте предполагает, что объект не является null (так как объект должен существовать, чтобы вызвать метод экземпляра на нем).Convert.ToString(obj)Не нужно предполагать, что объект не является null (так как это статический метод в классе Convert), но вместо этого вернетString.Emptyесли это и null.
позволяет понять разницу с помощью этого примера:
int i= 0; MessageBox.Show(i.ToString()); MessageBox.Show(Convert.ToString(i));мы можем преобразовать целое число
iС помощьюi.ToString ()илиConvert.ToString. Так в чем же разница?основное различие между ними-это
Convertфункция обрабатывает нули в то время какi.ToString ()не делает; это вызовет ошибку исключения нулевой ссылки. Так как хорошая практика кодирования с помощьюconvertвсегда безопасный.
в дополнение к другим ответы на обращения
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
вы можете создать класс и переопределить
toStringметод, чтобы сделать все, что вы хотите.например-вы можете создать класс "MyMail" и переопределить
toStringметод для отправки электронной почты или выполнения какой-либо другой операции вместо записи текущего объекта.The
Convert.toStringпреобразует указанное значение в эквивалентное строковое представление.
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
на
Convert.ToString(), преобразование обрабатывает либо aNULLзначение или нет, но в.ToString()он не обрабатываетNULLзначение иNULLссылка ошибка исключения. Так что это в хорошей практике, чтобы использоватьConvert.ToString().
для любителей кода это лучший ответ.
.............. 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)
методы "в основном" те же,за исключением обращение null.
Pen pen = null; Convert.ToString(pen); // No exception thrown pen.ToString(); // Throws NullReferenceExceptionот MSDN :
преобразовать.Метод ToStringпреобразует указанное значение в эквивалентное строковое представление.
Я согласен с @Райна'ы ответ. Кстати, начиная с C#6.0 для этой цели вы можете использовать:
someString?.ToString() ?? string.Empty;или
$"{someString}"; // I do not recommend this approach, although this is the most concise option.вместо
Convert.ToString(someString);
ToString()не может обрабатывать значения NULL иconvert.ToString()может обрабатывать значения, которые являются нулевыми, поэтому, когда вы хотите, чтобы ваша система обрабатывала нулевое значение, используйтеconvert.ToString().
Convert.ToString(strName)будет обрабатывать нулевые значения иstrName.Tostring()не будет обрабатывать значение null и исключение.так что лучше использовать
Convert.ToString()затем.ToString();
ToString() Vs Convert.ToString()сходство :-
оба используются для преобразования определенного типа в строку, т. е. int в строку, float в строку или объект в строку.
разница :-
ToString()не может обрабатывать null в то время как в случае сConvert.ToString()будет обрабатывать значение null.пример :
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. } } }
Comments