Используйте набор строковых констант в класс или структуру и используйте его в качестве параметра для метода C# - PullRequest
1 голос
/ 25 марта 2020

У меня есть список языков, таких как

public ??struct?? Language {
    Arabic = "ar"
    Brazilian = "br"
    Bulgarian = "bg"
    Cantonese = "hk"
    Croatian = "hr"
    Czech = "cz"
    Danish = "dk"
    Dutch = "nl"
    English = "uk"
    ...
}

Я хочу использовать структуру с этими языками как Language и использовать ее в качестве параметра в методе, подобном

void SetLanguage(Language lang) {
   if(lang == Language.Arabic) { ... }
}

Невозможно использовать перечисления, так как они принимают только целые значения. Я никогда не использовал структуру и не знаю, как достичь своей цели ...

Дайте мне знать, если что-то не понятно.

1 Ответ

6 голосов
/ 25 марта 2020

Вы можете использовать класс с закрытым конструктором и серию открытых полей c для каждого языка:

sealed class Language
{
    public static readonly Language Arabic = new Language("ar");
    public static readonly Language Brazilian = new Language("br");

    private Language(string name)
    {
        this.Name = name;
    }

    public string Name{get;}
}

Сделав конструктор закрытым, вы получите полный контроль над числом и конфигурацией каждого экземпляра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...