Сравнение между 2 System.Drawing.Brushes не удается

Вот еще одна странность в.net 4.0, которую я нашел:

Когда я хочу проверить, если переменная, которая содержит System.Drawing.Brush, держит определенную кисть, как:

using System.Drawing;

HisCell.Col == Brushes.White

иногда это терпит неудачу, несмотря на то, что я назначил Brushes.White в HisCell.Col ранее.

Как мне обойти эту ошибку?

1 ответ

Brushes класс создает локальные копии своих Brush объекты. Итак, если вы сделали сравнение Brushes.White к значению, которое было установлено в другом потоке, они будут разными объектами и приведут к ложному равенству, потому что Brush не реализует равенство, поэтому будет выполнено ссылочное равенство.

Другие вопросы по тегам