Использование строковых констант в неявном преобразовании - PullRequest
8 голосов
/ 24 января 2010

Рассмотрим следующий код:

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";

Я не могу расширить класс String с помощью неявной перегрузки оператора TextType, но есть ли способ присвоить литеральную строку другому классу (который обрабатывается методом или чем-то еще)?

String является ссылочным типом, поэтому, когда они разрабатывали C #, им, очевидно, приходилось использовать какой-то способ для получения строкового литерала в классе. Я просто надеюсь, что это не жестко закодировано в языке.

Ответы [ 2 ]

9 голосов
/ 24 января 2010
public static implicit operator TextType(String text) {
    return new TextType(text);
}
6 голосов
/ 24 января 2010

Добавить

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

в свой класс?:)

...