Frage

Gibt es eine Möglichkeit Aufzählungen in VB.net zu kombinieren?

War es hilfreich?

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 Enums 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 Enums 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 .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top