Зачем перебирать перечисление, возвращая дубликаты ключей?

Сейчас я работаю над некоторыми вещами, касающимися реестра.

Я проверил перечислениеRegistryRights в .System.Security.AccessControl

public enum RegistryRights
{
    QueryValues = 1,
    SetValue = 2,
    CreateSubKey = 4,
    EnumerateSubKeys = 8,
    Notify = 16,
    CreateLink = 32,
    Delete = 65536,
    ReadPermissions = 131072,
    WriteKey = 131078,
    ExecuteKey = 131097,
    ReadKey = 131097,
    ChangePermissions = 262144,
    TakeOwnership = 524288,
    FullControl = 983103,
}

Это перечисление является побитовым, и я знаю, что перечисления могут содержать повторяющиеся значения. Я пытался перебрать перечисление по этому коду:

 foreach (System.Security.AccessControl.RegistryRights regItem in Enum.GetValues(typeof(System.Security.AccessControl.RegistryRights)))
        {
            System.Diagnostics.Debug.WriteLine(regItem.ToString() + "  " + ((int)regItem).ToString());
        }

также Enum.GetName (typeof (RegistryRights), regItem) возвращает одно и то же имя ключа.

и вывод, который я получил:


QueryValues  1
SetValue  2
CreateSubKey  4
EnumerateSubKeys  8
Notify  16
CreateLink  32
Delete  65536
ReadPermissions  131072
WriteKey  131078
<strong>ReadKey  131097
ReadKey  131097</strong>
ChangePermissions  262144
TakeOwnership  524288
FullControl  983103

Может кто-нибудь, пожалуйста, скажите мнеЗачем получить дубликаты ключей? ("ReadKey» вместо "ExecuteKey ")Как я могу заставить его привести int ко второму ключу значения? а почему ToString не возвращает реальное значение ключа?

Ответы на вопрос(2)

Ваш ответ на вопрос