Main difference is each class base class is Object class, and object class has few methods and ToString() is one of them you can write overload
So when you call object.ToString() its mean it will call that objects ToString
there for if object is null then it will throw an exception
Object is not set to an instance of an object
Where as In Convert.ToString method, Convert is a static class where we pass our object and get the out put in that method its check where the object is null or no if not the call that objects ToString method other wise return null.
This is the main difference Now you could understand why this behavioral difference
object objec = null;
string objValue1 = objec .ToString(); string objValue2 = Convert.ToString(objec);