Преобразования

Перечисляемые типы преобразуются к своему базовому типу и обратно с применением явного преобразования:

enum Values

{

A = 1,

B = 5,

C = 3,

D = 42

}

class Test

{

public static void Main()

{

Values v = (Values) 2;

int ival = (int) v;

}

}

У этого правила существует единственное исключение: константа 0 преобразуется к перечисляемому типу без явного указания типа. Это позволяет использовать конструкции следующего вида:

public void DoSomething(BitValues bv)

{

if (bv == 0)

{

}

}

Если бы не это исключение, команду if пришлось бы записывать в следующем виде:

if (bv == (BitValues) 0)

Хотя в данном примере это приемлемо, на практике, если перечисление находится на низком уровне иерархии типов, конструкция получается довольно громоздкой:

if (bv == (CornSoft.PlotLibrary.Drawing.LineStyle.BitValues) 0)

Предлагаю ознакомиться с аналогичными статьями: