8

次のコードを検討してください。

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.

しかし、可能であれば、次のことができるようにしたいと考えています。

TextType textFromStringConstant = "SomeOtherText";

TextType の暗黙的な演算子のオーバーロードを使用して String クラスを拡張することはできませんが、リテラル文字列を別のクラス (メソッドまたは何かによって処理される) に割り当てる方法はありますか?

文字列は参照型であるため、C# を開発したとき、クラスに文字列リテラルを取得するために何らかの方法を使用する必要があったことは明らかです。言語にハードコーディングされていないことを願っています。

4

2 に答える 2

9
public static implicit operator TextType(String text) {
    return new TextType(text);
}
于 2010-01-24T18:46:49.080 に答える
6

追加

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

あなたのクラスに?:)

于 2010-01-24T18:48:26.337 に答える