358 Stimmen

Macht es Sinn, "as" anstelle eines Casts zu verwenden, auch wenn es keine Nullprüfung gibt?

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?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X