2016-05-24 14 views
0

Ich bin auf diesen bestimmten Teil des Codes gestolpert und bin ein bisschen ratlos, wie nützlich es ist.Konstante mit mehreren Werten?

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 

Getestet habe ich es ein wenig und haben nicht mehr Einblick bekommen als:
FILE_SHARE_ALL sowieso immer gleich 4 ist.
Gibt es etwas, das ich vermisse?

EDIT: Danke für Ihre Hilfe, ich habe das Problem herausgefunden ->Code 18 Copy-Paste Fehler in meinem Testgerät die Linie

war
Public Const FILE_SHARE_ALL as Integer = FILE_SHARE_DELETE or FILE_SHARE_DELETE or FILE_SHARE_DELETE 

Beurteilen Sie mich nicht!

+0

es sozusagen "Flags" ist die Kombination. 1 2 und 4 sind ihre eigenen binären Bits, und wenn sie zusammen "oder" werden, wird eine ganze Zahl mit allen dargestellten Flags erzeugt. – Jeremy

+1

Sind Sie sicher, dass es 4 ist? es sollte 7 sein. –

+0

[Wenn es nicht 7 ist, ist dein VS pleite] (https://dotnetfiddle.net/H9TQN6) – Plutonix

Antwort

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 

Die Or hier ist ein Bitwise or, was bedeutet, dass die FILE_SHARE_ALL mit 7 führen sollte, da:

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

001 | 010 | 100 = 111 ' equals int 7.