2010-01-24 18 views
8

Considere el siguiente código:Uso de las constantes de cadena en la conversión implícita

public class TextType { 

    public TextType(String text) { 
     underlyingString = text; 
    } 

    public static implicit operator String(TextType text) { 
     return text.underlyingString; 
    } 

    private String underlyingString; 
} 

TextType text = new TextType("Something"); 
String str = text; // This is OK. 

pero quiero ser capaz de hacer lo siguiente, si es posible.

TextType textFromStringConstant = "SomeOtherText"; 

No puedo extender la clase String con el TextType sobrecarga del operador implícita, pero ¿hay alguna manera de asignar una cadena literal a otra clase (el cual es manejado por un método o algo así)?

La cadena es un tipo de referencia, por lo que cuando desarrollaron C# obviamente tuvieron que usar alguna forma de obtener una cadena literal para la clase. Solo espero que no esté codificado en el lenguaje.

+0

Consulte la sección 10.10.3 de la especificación para obtener más información. –

Respuesta

9
public static implicit operator TextType(String text) { 
    return new TextType(text); 
} 
+0

Soluciona el texto! = Valor - aunque fuiste más rápido :) –

+1

No puedo creer lo mucho que eché de menos que las sobrecargas del operador son en ambos sentidos. Tenía la sensación de que el método debería pertenecer a la clase String ... Gracias. –

6

Añadir

public static implicit operator TextType(string content) { 
    return new TextType(content); 
} 

a su clase? :)

Cuestiones relacionadas