2011-03-08 2 views
1
class A 
{ 
    public Color ColorA { get; set; } 
    public Color ColorB { get; set; } 

    public A(Color colorA, Color colorB) 
    { 
     ColorA = colorA; 
     ColorB = colorB; 
    } 

    public override string ToString() 
    { 
     return ColorA + " " + ColorB; 
    } 
} 

이 같은 렌더링 :DebuggerDisplay - 대괄호 유형은

enter image description here


그리고이 :

class A 
{ 
    public Color ColorA { get; set; } 
    public Color ColorB { get; set; } 

    public A(Color colorA, Color colorB) 
    { 
     ColorA = colorA; 
     ColorB = colorB; 
    } 

    public override string ToString() 
    { 
     return "Red" + " " + "Black"; 
    } 
} 

는 렌더링과 같은 :

enter image description here

왜 다른가요?

편집 : 이유는 차이가 있습니다. 내 질문은 색상의 텍스트를 하드 코딩하지 않고 두 번째 결과를 얻는 방법입니다.

+0

이 ColorA.ToString을()'시도 돌아 + ""+ ColorB.ToString(); '의 차이는 기본 유형에 ToString을 호출하는 것을 사실로 인해 가능성이 높습니다, 즉 그것의 기본 구현에서 '색상'. –

답변

3

첫 번째 메서드는 Color 인스턴스에서 암시 적으로 ToString을 호출하지만 두 번째 메서드는 문자열을 반환하는 것입니다.

편집 : 잘 모르겠지만 자동으로 처리되었다고 생각합니다. 그렇지 않으면 ToKnownColor 메서드를 살펴보고 KnownColor 열거 형을 반환합니다.이 동작을 사용하여 원하는 비헤이비어로 색을 구성 할 수 있습니다. 그러나 가능한 모든 색상의 이름이 없다는 사실을 알고 있어야합니다.

+0

죄송합니다. 잘못된 질문을했습니다. 제 편집을 참조하십시오. – sventevit

0

이렇게하면 ToString() 결과가 표시됩니다.

첫 번째 것은 Color.Red.ToString()을 호출하고 'Color [Red]', Color.Black.ToString()을 호출합니다.

0

첫 번째 인스턴스에서는 Color 클래스의 ToString() 메서드가 호출되어 Color [ColorName] 출력이 제공됩니다.