Die Kombination von Aufzählungen
Frage
Gibt es eine Möglichkeit Aufzählungen in VB.net zu kombinieren?
Lösung
Ich glaube, was Sie wollen, ist ein Flag Typ Enum.
Sie müssen die Flaggen an die Spitze der ENUM-Attribut hinzufügen, und dann können Sie Aufzählungen mit dem ‚Or‘ Schlüsselwort kombinieren.
Wie folgt aus:
<Flags()> _
Enum CombinationEnums As Integer
HasButton = 1
TitleBar = 2
ReadOnly = 4
ETC = 8
End Enum
. Hinweis: Die Zahlen auf der rechten Seite sind immer doppelt so groß (Potenzen von 2) - dies benötigt wird, der Lage sein, die einzelnen Fahnen zu trennen, die gesetzt wurden
die gewünschten Flags Kombinieren Sie die Oder Schlüsselwort:
Dim settings As CombinationEnums
settings = CombinationEnums.TitleBar Or CombinationEnums.Readonly
Dies setzt TitleBar und Read-Only in die Enum
Um zu überprüfen, was eingestellt ist:
If (settings And CombinationEnums.TitleBar) = CombinationEnums.TitleBar Then
Window.TitleBar = True
End If
Andere Tipps
Sie können die Flags verwenden, um eine Enum wie so dekorieren, die Sie die Enum kombinieren lassen:
<FlagsAttribute> _
Public Enumeration SecurityRights
None = 0
Read = 1
Write = 2
Execute = 4
Und sie rufen Sie dann wie so (Klasse UserPriviltes):
Public Sub New ( _
options As SecurityRights _
)
New UserPrivileges(SecurityRights.Read OR SecurityRights.Execute)
Sie effektiv kombiniert bekommen (Bitmathematik), so dass die oben Benutzer hat sowohl Lese- als auch rundum Security in einer Phantasie Variable durchführt.
Um zu überprüfen, um zu sehen, ob der Benutzer ein Privileg hat Sie verwenden und (mehr bitweise Mathematik) mit den Mitgliedern ENUM-Wert mit dem dem Enum-Wert zu überprüfen für Sie überprüfen:
//Check to see if user has Write rights
If (user.Privileges And SecurityRights.Write = SecurityRigths.Write) Then
//Do something clever...
Else
//Tell user he can't write.
End If
HTH, Tyler
Wenn ich verstehe Ihre Frage richtig Sie verschiedene Aufzählungstypen kombinieren möchten. So kann eine Variable einen Wert speichert aus einem von zwei verschiedenen Enum Recht? Wenn Sie sich fragen, über das Speichern von zwei verschiedenen Werte eines Aufzählungstyp kombiniert man bei Dave Arkell Erklärung aussehen
Aufzählungen sind nur ganze Zahlen mit einigem syntaktischen Zucker. Also, wenn Sie sicherstellen, dass es keine Überlappung Sie sie durch Gießen kombinieren int.
Es wird nicht für ziemlich Code machen though. Ich versuche, mit Aufzählungen der meisten Zeit zu vermeiden. Normalerweise, wenn Sie lassen Aufzählungen brüten in Ihrem Code ist es nur eine Frage der Zeit, bevor sie die Geburt bis zur wiederholten Fall Aussagen und andere unordentlich Antipatterns geben.
Der Schlüssel zur Kombination Enum
s ist, um sicherzustellen, dass der Wert eine Potenz von zwei (1, 2, 4, 8, etc.), so dass Sie Bit-Operationen auf sie (|=
&=
) durchführen können. Dieser Enum
s kann mit einem Flags
Attribute markiert werden. Die Anchor
Eigenschaft auf Windows Forms-Steuerelemente ist ein Beispiel für eine solche Kontrolle. Wenn es als ein Flag gekennzeichnet ist, Visual Studio lässt Sie Werte überprüfen, anstatt eine einzelne in einem Drop-Down in den Eigenschaften Designer auszuwählen.
Wenn Sie die Einnahme über ENUM-Flaggen mit () gibt es einen guten Artikel hier .