Прежде всего "любой объект как строка" и "любой предмет.ToString() "совершенно разные вещи с точкой зрения их соответствующего контекста.
string str = any-object as string;
1) Это будет отбрасывать любой-объект в качестве строкового типа, и если какой-либо объект-не кастуется в строку, то это утверждение будет возвращать нуль без каких-либо исключений
2) Это компилятор-служба.
3) Это работает очень хорошо для любого другого типа, кроме строки, например: вы можете сделать это как любой объект как Employee, где Employee является класс, определенный в вашей библиотеке.
string str = any-object.ToString();
1) Это вызовет ToString() любого объекта из защиты типа. Поскольку System.Object определяет метод ToString(), любой класс в .NET-инфраструктуре имеет метод ToString(), доступный для переустановки. Программист будет переопределять ToString() в классе объектов или дефиниции структуры и напишет код, который возвращает подходящее строковое представление любого объекта в соответствии с ответственностью и ролью, которую играет любой объект.
2) Как вы можете определить класс Employee и метод OverString ToString(), который может возвращать строковое представление объекта Employee как «FIRSTNAME - LASTNAME, EMP-CDOE».
Обратите внимание, что в этом случае у программиста есть контроль над ToString(), и он не имеет никакого отношения к кастингу или преобразованию типов.
Возможный дубликат [Casting vs Преобразование объекта toString, когда объект действительно является строкой] (http://stackoverflow.com/questions/1170756/casting-vs-converting-an-object-tostring-when-object- true-is-a-string) –