Перейти к содержанию

Перечисления (Enum)

Синтаксис для перечислений практически идентичен синтаксису в C#. Однако, значения должны быть обязательно указаны и обязательно должны начинаться с нуля.
Также для перечислений существует специальная опция — allow_alias = true, при задании которой допускаются одинаковые значения для нескольких элементов enum-а. Пример:

message CountryReply {
    int32 CountryId = 1;
    Continent Continent = 2;
}
enum Continent {
    option allow_alias = true;
    Unknown = 0;
    NorthAmerica = 1;
    SouthAmerica = 2;
    Europe = 3;
    Africa = 4;
    Asia = 5;
    Australia = 6;
    Oceania = 6;
}

Сгенерированный код будет таким:
public enum Continent {
    [pbr::OriginalName("Unknown")] Unknown = 0,
    [pbr::OriginalName("NorthAmerica")] NorthAmerica = 1,
    [pbr::OriginalName("SouthAmerica")] SouthAmerica = 2,
    [pbr::OriginalName("Europe")] Europe = 3,
    [pbr::OriginalName("Africa")] Africa = 4,
    [pbr::OriginalName("Asia")] Asia = 5,
    [pbr::OriginalName("Australia")] Australia = 6,
    [pbr::OriginalName("Oceania", PreferredAlias = false)] Oceania = 6
}

Также существует возможность резервировать значения перечисления для предотвращения ломающих изменений в будущем, об этом написано здесь


Последнее обновление : 23 апреля 2023 г.
Дата создания : 6 апреля 2023 г.

Комментарии

Комментарии