2010-08-08 6 views
6

me di cuenta de que puede hacer este tipo de cosas en C#:Ejemplos de asignación de variable implícita en C#

XNamespace c = "http://s.opencalais.com/1/pred/"; 

Aviso el valor de cadena se convierte implícitamente a diferentes tipos. ¿Hay otros lugares donde se pueda hacer esto? ¿Cuáles son algunos patrones y prácticas comunes en torno a este tipo de cosas?

Respuesta

2

Sorprendentemente, la primera vez que vi este estaba en el Wikipedia article sobre los operadores de conversión de C#, en realidad nunca he visto a nadie usa esto antes Parece que perjudicaría la legibilidad y confundiría a muchos desarrolladores ...

+0

En mi experiencia, solo confunde a personas que desconocen esta posibilidad. Una vez que sepa que el código anterior es legítimo y que la conversión implícita es posible, es obvio que hay un operador de conversión implícito. Este tipo de conversiones deben usarse con moderación de todos modos. – Dykam

1

Básicamente, XNamespace proporciona un operador que realiza conversiones implícitas.

Creo que la mayoría de las pautas de sentido común se aplican, solo úselas donde tenga sentido y evite confusiones. El mayor problema es conversión involuntaria que podría abrirse para errores de programación. Puede evitar esto y aún así proporcionar una conversión con un operador de conversión explícita.

Un ejemplo de un caso en el que desearía utilizar un operador de conversión explícito en lugar de uno implícito sería una clase entera que permita la conversión de un tipo de punto flotante; una conversión implícita escondería el truncamiento/redondeo que debería tener lugar y podría confundir al usuario (y probablemente sea la fuente de errores).

En mi código lo he usado un par de veces, por ejemplo, en una estructura de resultado de validación muy simple que proporcionó una conversión implícita a bool (pero no desde). Esto me permitió hacer if (result) { ... } (el jurado todavía está deliberando acerca de la utilidad de esto :)).

Supongo que la mayoría de su uso es para tipos de datos "simples", como enteros grandes, decimales y del mismo modo.

+0

Interesante uso de la conversión de una estructura a bool. –