Также важно помнить, что «как» действует в ссылке, а не в самом объекте. Вот почему он может возвращать ноль вместо генерации исключения, потому что объект останется нетронутым. И поэтому вы можете делать это только на ссылочных типах.
Обычно это не имеет большого значения, но если вы реализуете функцию приведения (как здесь MSDN ), она будет не вызываться с использованием оператора as.
Итак, оператор as полезен для «перемещения вверх и вниз по иерархии наследования»: если у вас есть класс Person, вы можете сделать:
Person p = new Person ();
ojbect o = p как объект;
р = о как личность;
Но во всех случаях объект в памяти не будет изменен каким-либо образом, только ссылка на него.
Надеюсь, это поможет