클래스의 정보 표현

|

다음은 MyClass 클래스의 디버깅 시 표현되는 정보입니다.

확장을 해야 내부 정보의 확인이 가능합니다.
cls 오른쪽의 RiSvE.MyClass(클래스 명) 대신 value1(Value 필드)을 표현하고 싶을 경우에 두 가지 방법이 있습니다.

첫 번째 방법은 ToString 메서드를 오버라이드 하는 것입니다.

class MyClass
{
    public String Name;
    public String Value;

    public MyClass(String name, String value)
    {
        this.Name = name;
        this.Value = value;
    }

    public override string ToString()
    {
        return Value;
    }
}

 

두 번째 방법은 DebuggerDisplayAttribute 특성을 이용하는 것입니다.

[System.Diagnostics.DebuggerDisplay("{Value}", Name = "{Name}")]
class MyClass
{
    public String Name;
    public String Value;

    public MyClass(String name, String value)
    {
        this.Name = name;
        this.Value = value;
    }
}

첫 번째와 두 번째의 경우 결과가 비슷해 보이지만 List<T> 개체에 추가된 후에 보면 차이점이 발생합니다.

첫 번째의 경우입니다.
0번째 요소가 value1임을 나타내고 있습니다.

두 번째의 경우입니다.
name1 요소가 value1임을 나타내고 있습니다.

두 번째의 경우 이름과 값이 같이 볼 수 있으므로 더 효율적인 디버깅이 가능할 것입니다.

And