Есть ли разница между методом ToString и литьем в строку?

object o;

Есть ли разница между o.ToString() и (string) o?

Ответы

Ответ 1

Есть разница, да. Каждый объект имеет метод ToString, но не каждый объект может быть передан в строку.

int i = 10;
string s1 = i.ToString(); // OK
string s2 = (string)i;    // Compile error.

object o = 10;
string s3 = o.ToString(); // OK
string s4 = (string)o;    // Runtime error.

Ответ 2

ToString() вызывает исключение, когда преобразование объекта null, (string) не выполняется.

Ответ 3

object.Tostring() преобразовать объект в строку. Если объект имеет нулевое значение, тогда он будет генерировать исключение, потому что no null имеет метод ToString().

В то время как (строковый) объект является процессом unboxing ссылочного типа для типа значения. здесь значение объекта копируется в новый экземпляр типа строки. если объект имеет значение null, он назначит нулевое значение.

Ответ 4

Да, они оба очень разные.

string anObjectString = (string)anObject; - это преобразование типа или преобразование типа было бы успешным только в том случае, если преобразование типа является допустимым.

ToString() - это метод, доступный для всех объектов (ов) в Framework. Это виртуальный метод, в котором реализация по умолчанию возвращает вам имя типа объекта.

Мы сравниваем яблоки с апельсинами здесь.

Ответ 5

Да, ToString() - это метод, который реализует каждый тип (поскольку каждый тип наследует от System.Object, который реализует метод). Некоторые типы могут переопределять этот метод, чтобы обеспечить собственные собственные переопределяющие реализации. Вызов ToString() должен всегда выполняться и возвращать экземпляр строки (хотя для некоторых реализаций он может быть пустым).

var x = new AnyArbitraryObjectType();
var y = x.ToString(); // will always succeed (if ToString has not been overridden, or if it has been overridden properly)

Приведение представляет собой преобразование заданной ссылки объекта в ссылку, введенную как строка. Если ссылочная ссылка не является строкой, то приведение не выполняется.

var a = "hello";
var b = 5;

var x = (string)a; // will succeed
var y = (string)b; // will fail with InvalidCastException

Ответ 6

в основном ToString() - это функция, которая возвращает строку, которая представляет объект, на который вы его применили.

string как тип, как int - примитив (в С# его объект)

Ответ 7

Если вы после безопасного преобразования из объекта в строку просто используете:

string s = Convert.ToString(o);