C # «as» cast vs classic cast [дубликат]

Возможный дубликат:
Приведение против использования ключевого слова as в CLR

Недавно я узнал о другом способе приведения. Вместо использования

SomeClass someObject = (SomeClass) obj;

можно использовать этот синтаксис:

SomeClass someObject = obj as SomeClass;

, который, кажется, возвращает null, если obj не является SomeClass, вместо того, чтобы генерировать исключение приведения класса.

Я вижу, что это может привести к NullReferenceException, если cast не удалось, и я пытаюсь получить доступ к переменной someObject. Так что мне интересно, что? Обоснование этого метода? Почему следует использовать этот способ преобразования, а не (старый) - он только, кажется, перемещает проблему неудачного преобразования «глубже» в код.

132
задан Community 23 May 2017 в 12:26
поделиться