Wybranie danych z typu Enum

0

Witam,

Mam zadeklarowany typ danych który wygląda w ten sposób:

    public enum PartType
    {
        PartA = 1,
        PartB = 2,
        PartC = 4,
        PartD = 8,
        PartE = 16
    }

Teraz we właściwości utrzymującej ten typ w klasie Example:

    public class Example
    {
        public PartType Type
        {
            set;
            get;
        }
    }

Chciałem dla właściwości Type ustawić, że ma wartość PartA lub PartB, a w dalszej części kodu sprawdzać czy ta właściwość ma przynajmniej PartA lub przynajmniej PartB. Czy jest to możliwe do zrealizowania?

Pozdrawiam,
Grzegorz

0

Nie wiem dokładnie o co Ci chodzi, ale jeśli będziesz miał nową klasę

Example ex = new Example();
// (jak się nie mylę nazwa Type jest zarezerwowana dla c# ale dla przykładu niech będzie)
// przypisujemy dla Type jakąś wartość czyli
ex.Type = PartType.PartB;

prawdopodobnie chcesz potem sprawdzić, czy jakaś zmienna zawiera czyli jest większa od np. PartB
robisz to w taki sposób
if(coś > (int)ex.Type) Console.WriteLine("Zawiera PartB i Part A");

0

nie tak
enum to pole wyliczeniowe, w .net moze byc dodatkowo oznaczone atrybutem FlagsAttribute, wtedy wartosci enuma mozna laczyc bitowym or

przyklad z Flags

[Flags]
enum Foo
{
  None = 0,
  A = 1,
  B = 2,
  C = 4,
  D = 8,
  E = 16
}

Foo foo1 = Foo.A | Foo.D;
if ((foo1 & Foo.D) > 0) Console.WriteLine("foo1 ma m.in. wartosc D");

Foo foo2 = Foo.C | Foo.E | Foo.B;
if (((foo2 & (Foo.B|Foo.E)) > 0) Console.WriteLine("foo2 ma m.in. wartosc B i E");

wazne ze rozlaczne wartosci enuma oznaczonego Flags musza miec rozlaczne wartosci binarne
mam nadzieje ze znasz reprezentacje binarna liczba, wiec
A = 00001
B = 00010
C = 00100
D = 01000
E = 10000
A | D = 01001

0

Dziękuję Wam za odpowiedzi. Znalazłem, że w .Net Framework 4 jest nowa metoda HasFlag i można ją wykorzystać zgodnie z opisem: http://msdn.microsoft.com/en-us/library/system.enum.hasflag.aspx :)

Pozdrawiam,
Grzegorz

1 użytkowników online, w tym zalogowanych: 0, gości: 1