(string)objcastsobjinto astring.objmust already be astringfor this to succeed.obj.ToString()gets a string representation ofobjby calling theToString()method. Which isobjitself whenobjis astring. This (should) never throw(s) an exception (unlessobjhappens to benull, obviously).
So in your specific case, both are equivalent.
Note that string is a reference type (as opposed to a value type). As such, it inherits from object and no boxing ever occurs.