2012-01-20 6 views
2

나는 8 개의 bool을 가진 클래스가 있으며 디버거에서 해당 bool을 1 또는 0으로 나타내려고합니까? 어떻게해야합니까?DebuggerDisplay 속성을 사용하여 비트 마스크를 표현하는 방법

+0

당신은 디버거에서/그들이 참으로 거짓 볼 수없는 이유는 무엇입니까? –

+0

8 개의'bool' 필드 또는'bool' 배열이 있습니까? –

+0

bool 인 8 개의 속성을 가진 클래스로, obj [0-7] = true로 액세스 할 수있는 인덱스가 있습니다. –

답변

2

요 간단한 도우미 메서드 만들 수 있습니다

[DebuggerDisplay("{GetBitMask(flags)}")] 
public class YouClass 
{ 
    private bool[] flags; 
    // ... 
} 
: 경우에 당신이 bool의 배열이 있고,

[DebuggerDisplay("{GetBitMask(flag1, flag8)}")] 
public class YouClass 
{ 
    private bool flag1; 
    // ... 
    private bool flag8; 
} 

또는이 같은

private string GetBitMask(params bool[] values) 
{ 
    var sb = new StringBuilder(); 
    foreach (var value in values) 
    { 
     sb.Append(value ? "1" : "0"); 
    } 
    return sb.ToString(); 
} 

그리고 그것을 사용을

수정 : 원래 c를 수정할 수 없거나 수정하지 않으려면 아가씨, 다음 몇 가지 유틸리티 클래스에 GetBitMask()를 이동, 그것을 static을하고 원하는 곳에서 사용 :

[DebuggerDisplay("{Utils.GetBitMask(flags)}")] 
관련 문제