c# - trycast - ¿Casting en Visual Basic?
new features c# (5)
Casting en VB.net utiliza la palabra clave ctype
. Entonces, el (CheckBox)sender
declaración C # (CheckBox)sender
es equivalente a ctype(sender,CheckBox)
en VB.net.
Por lo tanto, su código en VB.net es:
if ctype(sender,CheckBox).Checked =True Then
'' Do something...
else
'' Do something else...
End If
Soy un programador de C # que está obligado a usar VB (¡eh!). Quiero verificar el estado de múltiples controles en un método, en C # esto se lograría así:
if (((CheckBox)sender).Checked == true)
{
// Do something...
}
else
{
// Do something else...
}
Entonces, ¿cómo puedo lograr esto en VB?
DO#:
(CheckBox)sender
VB:
CType(sender, CheckBox)
VB realmente tiene 2 nociones de casting.
- Lanzamiento de estilo CLR
- Casting léxico
La fundición de estilo CLR es lo que un usuario de C # está más familiarizado. Utiliza el sistema de tipo CLR y las conversiones para realizar el reparto. VB tiene DirectCast y TryCast equivalentes al lanzamiento de C # y como operador respectivamente.
Los moldes léxicos en VB hacen un trabajo adicional además del sistema de tipo CLR. En realidad representan un superconjunto de moldes potenciales. Los moldes léxicos se detectan fácilmente buscando el prefijo C en el operador de reparto: CType, CInt, CString, etc ... Estos lanzamientos, si no son conocidos directamente por el compilador, pasarán por el tiempo de ejecución de VB. El tiempo de ejecución hará la interpretación en la parte superior del sistema de tipos para permitir que los moldes como los siguientes funcionen
Dim v1 = CType("1", Integer)
Dim v2 = CBool("1")
DirectCast realizará la conversión en tiempo de compilación, pero solo se puede usar para generar tipos de referencia. Ctype realizará la conversión en tiempo de ejecución (más lenta que la conversión en tiempo de compilación), pero obviamente es útil para convertir tipos de valores. En su caso, "remitente" es un tipo de referencia, por lo que DirectCast sería el camino a seguir.
Adam Robinson está en lo cierto, también DirectCast
está disponible para usted.