¿C # es equivalente a DirectBast de VB.NET?
¿C # tiene un equivalente a DirectCast de VB.NET?
Soy consciente de que tiene conversiones () y la palabra clave 'as', pero esas se alinean con CType y TryCast.
Para ser claros, estas palabras clave hacen lo siguiente;
CType / () moldes: Si ya es del tipo correcto, lo emite; de lo contrario, busque un convertidor de tipos e invoque. Si no se encuentra ningún convertidor de tipos, arroje una InvalidCastException.
TryCast / "como" palabra clave: Si es del tipo correcto, lo emite, de lo contrario, devuelve nulo.
DirectCast: Si es del tipo correcto, lo emite, de lo contrario, arroje una InvalidCastException.
Después de haber explicado lo anterior, algunas personas todavía han respondido que () es equivalente, por lo que ampliaré más sobre por qué esto no es cierto.
DirectCast solo permite conversiones de reducción o ampliación en el árbol de herencia. No admite conversiones en diferentes ramas como (), es decir:
C #: esto compila y ejecuta:
//This code uses a type converter to go across an inheritance tree
double d = 10;
int i = (int)d;
VB.NET - esto NO COMPILA
'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)
El equivalente en VB.NET a mi código C # es CType:
'This compiles and runs
Dim d As Double = 10
Dim i As Integer = CType(d, Integer)