Frage

Betrachten Sie den folgenden Code:

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 nach Möglichkeit Folgendes machen können.

TextType textFromStringConstant = "SomeOtherText";

Ich kann die String -Klasse nicht mit der überlastenden Texttype -Operator -Operator -Überladung erweitern, aber gibt es eine Möglichkeit, einer anderen Klasse eine wörtliche Zeichenfolge zuzuweisen (die mit einer Methode oder so ausgeführt wird)?

String ist ein Referenztyp. Wenn sie C# entwickelten, mussten sie offensichtlich eine Möglichkeit nutzen, um ein String -Literal in die Klasse zu bringen. Ich hoffe nur, dass es nicht in der Sprache festkodiert ist.

War es hilfreich?

Lösung

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

Andere Tipps

Hinzufügen

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

zu deiner Klasse? :)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top