In Entwicklungsblogs, Online-Codebeispielen und (seit kurzem) sogar in einem Buch stolpere ich immer wieder über solchen Code:
var y = x as T;
y.SomeMethod();
oder, noch schlimmer:
(x as T).SomeMethod();
Das leuchtet mir nicht ein. Wenn Sie sicher sind, dass x
ist vom Typ T
sollten Sie einen direkten Wurf verwenden: (T)x
. Wenn Sie sich nicht sicher sind, können Sie as
müssen aber prüfen, ob null
bevor Sie eine Operation durchführen. Alles, was der obige Code tut, ist, eine (nützliche) InvalidCastException
in eine (nutzlose) NullReferenceException
.
Bin ich der Einzige, der meint, dass dies ein eklatanter Missbrauch des as
Stichwort? Oder habe ich etwas Offensichtliches übersehen und das obige Muster macht tatsächlich Sinn?