as

asは安全にダウンキャストを行う。

as - C# リファレンス | Microsoft Docs

ダウンキャスト可能な型ならキャストするが、失敗した場合はnullを返す。

基底クラスBaseClass.csは、

派生クラスDerivedClass1.csは、

派生クラスDerivedClass2.csは、

そして、MainClass.csは、

objにDerivedClass1のインスタンスを入れて、それぞれasでキャストしてみる。

BaseClass b = obj as BaseClass Success!
DerivedClass1 d1 = obj as DerivedClass1 Success!
d2 == null!
続行するには何かキーを押してください . . .

外身と同じ基底クラスBaseClassや中身と同じ派生クラスDerivedClass1へのキャストは行われる。
DerivedClass2へのキャストは、外身は同じBaseClassでも中身はDerivedClass1なので、ダウンキャストに失敗となり、nullが返る。

Sample/cs/as/as/src/as at master · bg1bgst333/Sample · GitHub