Используется битовая маска для проверки, установлен ли один бит (FileAttributes.Directory).
Значения перечисления представляют собой степени двух, соответствующие отдельным битам.
ReadOnly = 1,
Hidden = 2,
System = 4,
Directory = 16,
Archive = 32,
Device = 64,
Если установлены ReadOnly и Directory, то FileAttributes равно 17. Вычисление выглядит следующим образом в двоичном виде:
File.GetAttributes(source) = 00001001
FileAttributes.Directory = 00001000 &
-------------------------------------
00001000
Если бит каталога был установлен не , вы получитевместо нуля:
File.GetAttributes(source) = 00000001
FileAttributes.Directory = 00001000 &
-------------------------------------
00000000
Несколько более краткий способ написать выражение, которое дает тот же эффект, - проверить ноль:
bool isDir = (File.GetAttributes(source) & FileAttributes.Directory) != 0;