2010-01-24 6 views
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"; 

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

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

+0

Подробнее см. В разделе 10.10.3 спецификации. –

ответ

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

Исправить текст! = Значение - вы были быстрее, хотя :) –

+1

Не могу поверить, как я пропустил эту перегрузку оператора, идет в обоих направлениях. У меня было ощущение, что метод должен принадлежать классу String ... Спасибо. –

6

Добавить

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

к классу? :)