texto - ¿Alternativa a las funciones de conversión de tipos de VB.NET(CBool) en C#?
funciones de conversion en visual basic (3)
¿Hay alguna alternativa a la palabra clave CBool
de VB en C #?
¿Qué hay de todas las otras funciones?
CBool
convertirá a Boolean en cualquier booleano válido: 0
, "False"
, null
, etc.
Eche un vistazo a la clase System.Convert
.
El truco es que las "funciones" de Cxx
en VB.NET no son realmente funciones . De hecho, son más como operadores que el compilador traduce a lo que determina es la conversión de tipo "mejor coincidencia".
Paul Vick solía tener un gran artículo sobre esto en su blog, pero parece que todas esas páginas ya se han eliminado. MSDN (que es más exacto aquí) dice:
Estas funciones se compilan en línea, lo que significa que el código de conversión es parte del código que evalúa la expresión. A veces no hay un llamado a un procedimiento para lograr la conversión, lo que mejora el rendimiento. Cada función coacciona una expresión a un tipo de datos específico.
Las opciones que tiene disponibles para hacerlo incluyen un lanzamiento directo (como: (bool)var
), un intento de conversión (usando el operador as
), llamando a uno de los métodos definidos en la clase System.Convert
, llamando al Type.Parse
aplicable Type.Parse
Método Type.Parse
, y tal vez algunas otras estrategias.
No hay un equivalente directo de esto en C #: en su lugar, tienes que pensar en el compilador.
En este caso, seguramente querrá usar la sobrecarga apropiada del método Convert.ToBoolean
porque ese método particular tendrá la lógica necesaria para convertir el valor en un bool
. Un lanzamiento directo no funcionará aquí.
Si espera convertir desde uno de los valores de cadena: "True", "true", "False" o "false", debe usar Boolean.Parse. En lugar de tratar de ser "inteligente" al respecto, Parse "fallará rápidamente" si no obtiene lo que espera. Al usar una conversión "inteligente" cuando realmente no la necesita, puede enmascarar los errores en su origen y luego tener que rastrearlos cuando aparecen más adelante en el código, lo que generalmente es más difícil.