2016-05-24 5 views
0

Я наткнулся на этот конкретный бит кода, и я немного озадачен, как полезность его.Константа с несколькими значениями?

Public Const FILE_SHARE_READ as Integer = 1 
Public Const FILE_SHARE_WRITE as Integer = 2 
Public Const FILE_SHARE_DELETE as Integer = 4 
Public Const FILE_SHARE_ALL as Integer = FILE_SHARE_READ or FILE_SHARE_WRITE or FILE_SHARE_DELETE 

я тестировал немного и не получил больше, чем понимания:
FILE_SHARE_ALL всегда равно 4 в любом случае.
Есть ли что-то, что мне не хватает?

EDIT: Спасибо за вашу помощь, я узнал, проблему ->Code 18 копипаст ошибки в моем тестере линии была

Public Const FILE_SHARE_ALL as Integer = FILE_SHARE_DELETE or FILE_SHARE_DELETE or FILE_SHARE_DELETE 

Не судите меня!

+0

это объединение "флаги", так сказать. 1 2 и 4 - их собственные биты в двоичном формате, а «или» объединение их создает целое число со всеми представленными флагами. – Jeremy

+1

Вы уверены, что это 4? это должно быть 7. –

+0

[Если это не 7, ваш VS нарушен] (https://dotnetfiddle.net/H9TQN6) – Plutonix

ответ

3
Public Const FILE_SHARE_READ as Integer = 1 
Public Const FILE_SHARE_WRITE as Integer = 2 
Public Const FILE_SHARE_DELETE as Integer = 4 
Public Const FILE_SHARE_ALL as Integer = FILE_SHARE_READ or FILE_SHARE_WRITE or FILE_SHARE_DELETE 

Or вот Bitwise or, а это означает, что должно привести к FILE_SHARE_ALL с 7, так как:

int 1 ' = binary 001 
int 2 ' = binary 010 
int 4 ' = binary 100 

001 | 010 | 100 = 111 ' equals int 7. 
Смежные вопросы