There is a simple but important difference between these three…
So in the case of object.ToString(), if object is null, it raise NullReferenceException.
Convert.ToString() return string.Empty in case of null object
(string) cast assign the object in case of null
So in case of
MyObject o = (string)NullObject;
MyObject o = (string)NullObject;
But when you use o to access any property, it will raise NullReferenceException.
To anyone who says there is no difference. Yes there is:
string s;
object o = null;
s = o.ToString();
//returns a null reference exception for s.
string s;
object o = null;
s = o.ToString();
//returns a null reference exception for s.
string s;
object o = null;
s = Convert.ToString(o);
//returns an empty string for s and does not throw an exception. If you dont believe it, try it!
object o = null;
s = Convert.ToString(o);
//returns an empty string for s and does not throw an exception. If you dont believe it, try it!
Neither way is right or wrong. Use the approach that applies to what behavior you need for null objects.
Eg:
//This will set the variable test to null: string test = Convert.ToString(ConfigurationSettings.AppSettings["Missing.Value"]); //This will throw an exception: string test = ConfigurationSettings.AppSettings["Missing.Value"].ToString();