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

나는 TextType 암시 적 연산자 오버로드와 String 클래스를 확장 할 수 없습니다 만, (방법 또는 무언가에 의해 처리됩니다) 다른 클래스에 리터럴 문자열을 할당 할 수있는 방법이있다?

문자열은 참조 형식이므로 C#을 개발할 때 분명히 클래스에 문자열 리터럴을 가져 오는 방법을 사용해야했습니다. 나는 그것이 언어에 하드 코딩되지 않았기를 바랍니다.

+0

자세한 내용은 10.10.3 절을 참조하십시오. –

답변

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

텍스트 수정! = value - 더 빨랐다. :) –

+1

나는 그 연산자를 놓친 것을 믿을 수 없다. 메서드가 String 클래스에 속해야한다는 느낌이 들었습니다. 고마워요. –

6

클래스에

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

을 추가 하시겠습니까? :)

관련 문제