Gdy rzutujesz w stylu C (to z nawiasami) a obiekt(który rzutujesz) nie jest typem na który jest rzutowany wyrzucony zostanie InvalidCastException. Więc musisz być pewny, że typ jest typem na który rzutujesz.
Używając słówka as nie zostanie nigdy wyrzucony żaden exception. Gdy typy się nie zgadzają to zamiast obiektu dostaniesz null.
Aby sprawdzić czy typ jest odpowiedni do rzutowania można użyć słowa is. Gdy tego nie zrobimy a typy się nie zgadzają (np rzutujemy owoc na samochód) rzutowanie w stylu C rzuca InvalidCastException a castowanie as zwraca null. Jeżeli się zgadzają otrzymujemy ten sam rezultat.