Для тех, кто нашел этот вопрос осветительным, у меня есть быстрый пример ~
, которым можно поделиться. В следующем фрагменте реализации метода рисования, который подробно описан в этой документации Mono , используется ~
с большим эффектом:
PaintCells (clipBounds,
DataGridViewPaintParts.All & ~DataGridViewPaintParts.SelectionBackground);
Без оператора ~
код, вероятно, будет выглядеть примерно так:
PaintCells (clipBounds, DataGridViewPaintParts.Background
| DataGridViewPaintParts.Border
| DataGridViewPaintParts.ContentBackground
| DataGridViewPaintParts.ContentForeground
| DataGridViewPaintParts.ErrorIcon
| DataGridViewPaintParts.Focus);
... потому что перечисление выглядит так:
public enum DataGridViewPaintParts
{
None = 0,
Background = 1,
Border = 2,
ContentBackground = 4,
ContentForeground = 8,
ErrorIcon = 16,
Focus = 32,
SelectionBackground = 64,
All = 127 // which is equal to Background | Border | ... | Focus
}
Заметили сходство этого перечисления с ответом Шона Брайта?
Я думаю, что наиболее важный вывод для меня заключается в том, что ~
- это тот же оператор в перечислении, что и в обычной строке кода.