Есть ли разница между методом 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);