Разница между конвертировать.ToString () and.Метод toString()



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



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

770   13  

13 ответов:

Convert.ToString() ручки null, в то время как ToString() нет.

вызов 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(), преобразование обрабатывает либо a NULL значение или нет, но в .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

    Ничего не найдено.