Ваше определение перечисления равно этому
[Flags]
public enum ElementsTag
{
None = 0,
Surname = 1,
SecondSurname = 2,
Forenames = 3,
PersonalNumber = 4,
Birthday = 5,
Nationality = 6,
DocumentExpirationDate = 7,
DocumentNumber = 8,
Sex = 9,
CityOfBirth = 10,
ProvinceOfBirth = 11,
ParentsName = 12,
PlaceOfResidence = 13,
CityOfResidence = 14,
ProvinceOfResidence = 15
}
Если вы передаете ElementsTag.ParentsName
, используется значение 12. В двоичной записи 12 = 0000 1100. Поэтому устанавливается 3-й и 4-й бит. 3-й бит соответствует значению 4, которое равно ElementsTag.PersonalNumber
, а 4-й бит соответствует значению 8, которое соответствует ElementsTag.DocumentNumber
.
Если вы хотите отличительные значения, вы должны использовать 2 ^ n значений, например, так:
[Flags]
public enum ElementsTag
{
None = 0,
Surname = 1,
SecondSurname = 1 << 1, // 2
Forenames = 1 << 2, // 4
PersonalNumber = 1 << 3, // 8
Birthday = 1 << 4,
Nationality = 1 << 5,
DocumentExpirationDate = 1 << 6,
DocumentNumber = 1 << 7,
Sex = 1 << 8,
CityOfBirth = 1 << 9,
ProvinceOfBirth = 1 << 10,
ParentsName = 1 << 11,
PlaceOfResidence = 1 << 12,
CityOfResidence = 1 << 13,
ProvinceOfResidence = 1 << 14
}