Прежде всего " любой объект как строка " и " любой объект.ToString () " - это совершенно разные вещи с точки зрения их соответствующего контекста.
string str = any-object as string;
1) Это приведет к тому, что any-object будет преобразован в строковый тип, и если any-object не будет преобразован в string, этот оператор вернет null без каких-либо исключений.
2) Это сервис компилятора.
3) Это работает очень хорошо для любого другого типа, кроме строки, например: вы можете сделать это как любой объект, как Employee, где Employee - это класс, определенный в вашей библиотеке.
string str = any-object.ToString();
1) Это вызовет ToString () любого объекта из определения типа. Поскольку System.Object определяет метод ToString (), любой класс в .Net Framework имеет метод ToString (), доступный для переопределения. Программист переопределит ToString () в определении любого объекта или структуры и напишет код, который возвращает подходящее строковое представление любого объекта в соответствии с ответственностью и ролью, которую играет любой объект.
2) Подобно тому, как вы можете определить класс Employee и метод OverStride ToString (), который может возвращать строковое представление объекта Employee как «FIRSTNAME - LASTNAME, EMP-CDOE».
Обратите внимание, что в этом случае программист имеет контроль над ToString () и не имеет ничего общего с приведением или преобразованием типов.