1.19 Ermitteln, ob ein oder mehr Enumerations-Flags gesetzt sind

Problem

Sie müssen ermitteln, ob eine Variable eines Enumerationstyps, der aus Bit-Flags besteht, ein bestimmtes oder mehrere bestimmte Flags enthält. Setzen wir beispielsweise die folgende Enumeration Language voraus:

[Flags]
enum Language
{
    CSharp = 0x0001, VBNET = 0x0002, VB6 = 0x0004, Cpp = 0x0008
}

Dann können Sie Boolesche Logik verwenden, um zu prüfen, ob die Variable lang in der folgenden Codezeile eine der Sprachen Language.CSharp und Language.Cpp oder beide enthält:

Language lang = Language.CSharp | Language.VBNET;

Lösung

Verwenden Sie die folgende Abfrage, um zu prüfen, ob in einer Variable ein bestimmtes Bit gesetzt ist:

if((lang & Language.CSharp) == Language.CSharp) { // lang ...

Get C# Kochbuch now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.