В основном это бинарная маска.Объединяя
ThreadState.Unstarted, ThreadState.WaitSleepJoin, ThreadState.Stopped, вы создаете маску.Когда вы and
, эта маска с другим значением сообщает, включены ли другие биты.
Давайте представим, что мы имеем дело с четырехбитным int Thread.Unstarted == 1, ThreadState.WaitSleepJoing == 2, ThreadState.Stopped == 4, ThreadState.Aborted = 8 и ThreadState.Running = 0, Это не реальные значения, они просто используются для упрощения примера.Посмотрите на ThreadState для реальных значений.
Итак, в двоичном виде:
Thread.Unstarted == 0001
Thread.WaitSleepJoing == 0010
Thread.Stopped == 0100
Когда вы or
эти значения вместе, вы получите 0111.
Теперь, когда мы and
0111 с ThreadState.Aborted (1000), вы получите 0000, который является ThreadState.Running.
Итак, автор в основном пытается показать вам, что ThreadState является битовым вектором, и вам нужно создать маску, чтобы увидеть, какие значения установлены.