비교

2014-03-03 2 views
-3

여기에 내가 발견 .NET 4.0의 또 다른 특질의 실패비교

나는 System.Drawing.Brush을 보유하고 변수, 같은 특정 브러시를 보유하고 있는지 확인하려면 :

using System.Drawing; 

HisCell.Col == Brushes.White 

사실 Brushes.White에서 HisCell.Col으로 할당 되었음에도 불구하고 가끔 실패합니다.

어떻게이 버그를 해결할 수 있습니까?

+4

디버거를 사용하십시오. 브러쉬가 아니라면. 그게 또 뭐야? 아마 네 잘못이야? .NET Framework의 버그는 불가능하지 않지만 사용자 코드의 버그가 발생할 가능성이 훨씬 큽니다. – nvoigt

+0

무언가가 실패 할 때마다 '때로는'귀하의 코드를 의심하십시오! –

+0

버그를 해결하고 싶지 않은 경우 버그를 수정 *하려고합니다. 버그가 * your * 코드에 있습니다. 'HisCell.Col'을 변경하는 모든 장소를 찾고 다른 코드가 참조를 수정할 가능성이 있음을 알 수 있습니다. – NathanAldenSr

답변

1

Brushes 클래스는 Brush 개체의 스레드 로컬 복사본을 만듭니다. 따라서 Brushes.White으로 설정 한 값을 다른 스레드에서으로 설정하면 Brush이 같지 않음으로 인해 참조 평등이 수행되므로 서로 다른 개체가되고 동등 함으로 false가 반환됩니다.