C # entspricht VB.NETs DirectCast?
Entspricht C # dem DirectCast von VB.NET?
Mir ist bekannt, dass es Casts () und das Schlüsselwort 'as' hat, aber diese passen zu CType und TryCast.
Um es klar zu sagen, machen diese Schlüsselwörter Folgendes:
CType / () wirft: Wenn es bereits der richtige Typ ist, konvertieren Sie ihn, suchen Sie andernfalls nach einem Typkonverter und rufen Sie ihn auf. Wird kein Typkonverter gefunden, wird eine InvalidCastException ausgelöst.
TryCast / "as" Schlüsselwort: Wenn es sich um den richtigen Typ handelt, wird er umgewandelt, andernfalls wird null zurückgegeben.
DirectCast: Wenn es sich um den richtigen Typ handelt, wird er umgewandelt, andernfalls wird eine InvalidCastException ausgelöst.
Nachdem ich das Obige formuliert habe, haben einige Leute immer noch geantwortet, dass () äquivalent ist, und ich werde weiter darauf eingehen, warum dies nicht wahr ist.
DirectCast ermöglicht nur das Eingrenzen oder Erweitern von Konvertierungen in der Vererbungsstruktur. Konvertierungen über verschiedene Zweige hinweg werden nicht unterstützt, wie dies bei () der Fall ist, d.
C # - das kompiliert und läuft:
//This code uses a type converter to go across an inheritance tree
double d = 10;
int i = (int)d;
VB.NET - das KOMPILIERT NICHT
'Direct cast can only go up or down a branch, never across to a different one.
Dim d As Double = 10
Dim i As Integer = DirectCast(d, Integer)
Die Entsprechung in VB.NET zu meinem C # -Code lautet CType:
'This compiles and runs
Dim d As Double = 10
Dim i As Integer = CType(d, Integer)