Сравнение между 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
не реализует равенство, поэтому будет выполнено ссылочное равенство.