2010-01-24 14 views
8

Betrachten Sie den folgenden Code ein:Verwenden von String-Konstanten in implizite Konvertierung

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. 

Aber ich möchte in der Lage folgendes zu tun ist, wenn möglich.

TextType textFromStringConstant = "SomeOtherText"; 

Ich kann die String-Klasse mit dem Texttype impliziten Operator Überlastung erstrecken, aber gibt es eine Möglichkeit, eine Zeichenkette zu einer anderen Klasse zugeordnet werden (was durch ein Verfahren oder etwas gehandhabt wird)?

String ist ein Referenztyp, also mussten sie, wenn sie C# entwickelten, offensichtlich einen Weg verwenden, um ein String-Literal für die Klasse zu erhalten. Ich hoffe nur, dass es nicht fest in der Sprache kodiert ist.

+0

Einzelheiten siehe Abschnitt 10.10.3 der Spezifikation. –

Antwort

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

Fix Text! = Wert - Sie waren schneller aber :) –

+1

Ich kann nicht glauben, wie ich diese Operatorüberladungen verpasst in beide Richtungen geht. Ich hatte das Gefühl, die Methode müsste zur String-Klasse gehören ... Danke. –

6

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

Ihrer Klasse hinzufügen? :)