2016-05-24 8 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:あなたの助けのおかげで、私は問題を発見した - >コード18 コピー&ペーストのミスを私のテスターに​​ラインが私を判断してはいけない

Public Const FILE_SHARE_ALL as Integer = FILE_SHARE_DELETE or FILE_SHARE_DELETE or FILE_SHARE_DELETE 

でした!ここ

+0

。 1 2と4は2進数で独自のビットであり、それらを一緒に「or」するとすべてのフラグが表された整数が作成されます。 – 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以来FILE_SHARE_ALLは、7となるはずであることを意味し、Bitwise orである:それはいわば "フラグ" を組み合わせるさ

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

001 | 010 | 100 = 111 ' equals int 7. 
関連する問題