Есть много способов, чтобы отличить/преобразовать объект в другой, какова разница между ними, и если нет никакой разницы, почему существует так много способов добиться чего-то одного? Разве это не ущерб языку?
Пусть объект obj соответствует строке.
obj.ToString()
obj as string
(string)obj
Convert.ToString(obj)