Подтвердить что ты не робот

Кастинг в строку или вызов ToString

object obj = "Hello";
string str1 = (string)obj;
string str2 = obj.ToString();

В чем разница между (string)obj и obj.ToString()?

4b9b3361

Ответ 1

  • (string)obj отличает obj в string. obj должен быть уже string для успеха.
  • obj.ToString() получает строковое представление obj, вызывая метод ToString(). Это obj, когда obj является string. Это (должно) никогда не бросает (-ы) исключение.

Итак, в вашем конкретном случае оба эквивалентны.

Обратите внимание, что string является ссылочным типом (в отличие от тип значения). Таким образом, он наследуется от объекта и

Ответ 2

Если какая-либо помощь, вы можете использовать оператор "как", который похож на листинг, но возвращает null вместо исключения при любом отказе преобразования.

string str3 = obj as string;

Ответ 3

На самом базовом уровне:

(string)obj попытается применить obj к string и не будет работать, если нет правильного преобразования.

obj.ToString() вернет string, который решил конструктор obj, представляет этот объект. По умолчанию он возвращает имя класса obj.

Ответ 4

(string) obj отбрасывает объект и сбой, если obj не является нулевым, а не строкой.

obj.ToString() преобразует obj в строку (даже если это не строка), он будет терпеть неудачу, если obj имеет значение null, как вызов метода.

Ответ 5

ToString() - метод класса объекта (основной родительский класс в .net), который может быть перегружен в вашем классе, который наследуется от класса объекта, даже если вы его не унаследовали.

(string) - это литье, которое может быть реализовано в классе it self, класс string, поэтому у вас нет возможности на нем.