object obj = "Hello";
string str1 = (string)obj;
string str2 = obj.ToString();
В чем разница между (string)obj
и obj.ToString()
?
object obj = "Hello";
string str1 = (string)obj;
string str2 = obj.ToString();
В чем разница между (string)obj
и obj.ToString()
?
(string)obj
отличает obj
в string
. obj
должен быть уже string
для успеха.obj.ToString()
получает строковое представление obj
, вызывая метод ToString()
. Это obj
, когда obj
является string
. Это (должно) никогда не бросает (-ы) исключение.Итак, в вашем конкретном случае оба эквивалентны.
Обратите внимание, что string
является ссылочным типом (в отличие от тип значения). Таким образом, он наследуется от объекта и
Если какая-либо помощь, вы можете использовать оператор "как", который похож на листинг, но возвращает null вместо исключения при любом отказе преобразования.
string str3 = obj as string;
На самом базовом уровне:
(string)obj
попытается применить obj
к string
и не будет работать, если нет правильного преобразования.
obj.ToString()
вернет string
, который решил конструктор obj
, представляет этот объект. По умолчанию он возвращает имя класса obj
.
(string) obj отбрасывает объект и сбой, если obj не является нулевым, а не строкой.
obj.ToString() преобразует obj в строку (даже если это не строка), он будет терпеть неудачу, если obj имеет значение null, как вызов метода.
ToString() - метод класса объекта (основной родительский класс в .net), который может быть перегружен в вашем классе, который наследуется от класса объекта, даже если вы его не унаследовали.
(string) - это литье, которое может быть реализовано в классе it self, класс string, поэтому у вас нет возможности на нем.