ИМХО мнения нет, не стоит этого делать.
Я не вижу никакой разницы между:
string myString= (string)null;
и
Object o = null;
string myString= (string)o;
В обоих случаях яхотел бы получить null
, что является поведением по умолчанию (я бы не рекомендовал NullReferenceException
, так как оба приведенных выше фрагмента кода полностью допустимы: оба явных преобразования возвращают null
).
Я бы нашелнесколько удивительно, что ссылка null
может быть каким-то образом преобразована в объект по умолчанию:
object o = null;
string myString = (string)o; //myString == String.Empty WTF?
Если этот сценарий имеет смысл, я бы реализовал его с помощью конструктора или определенного статического метода, где очевидно создание нового объекта, никогда с помощью неявного или явного оператора.
Операторы приведения должны делать именно то, для чего предназначены: преобразовывать из одного типа в другой.null
можно только "преобразовать" в null
.