Хотите создать объект с помощью enum, но не можете понять, как - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть класс автомобиля, которому нужна марка, тип и марка, например, внедорожник, купе, седан.Я сделал enum класс для этих типов.Я хочу создать новую машину, которая нуждается в этих аргументах.Я должен импортировать эти данные из текстового файла.Текстовый файл содержит это: & Peugeot * 406% седан $ 2002/110.Я разбил кусочки информации на строковый массив, но не знаю, как получить марку машины.Я надеюсь, вы понимаете мою проблему вот код:

 Car car = new Car(data[0],data[1],int.Parse(data[2]),int.Parse(data[3]),int.Parse(data[4]));

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

Вам нужно разобрать строки в перечислимые эквиваленты.Лучше использовать TryParse, чтобы избежать исключений.

Вот простой пример, специально написанный для вас:)

enum AutoBrand { Skoda, Toyota, BMW};
enum AutoType { SUV, SEDAN, HATCHBACK};

static void Main(string[] args)
{

string[] strAutoBrands = new string[] { "Skoda", "Toyota", "BMW" };
string[] strAutoTypes = new string [] { "SUB", "SEDAN", "HATCHBACK" };

foreach(var autoBrandVal in strAutoBrands)
{
    AutoBrand b = (AutoBrand) Enum.Parse(typeof(AutoBrand), autoBrandVal);

    Console.WriteLine($"Auto brand is: {b}");

    }
}   
0 голосов
/ 28 декабря 2018

Перечисления обычно используются для определения набора констант, которые следует использовать вместо «магических чисел», чтобы сделать режим code удобочитаемым.Они могут не подходить для использования с данными на основе строк, такими как make и model.

Однако, если у вас есть строка и вы хотите найти эквивалентное значение Enum, используйте Enum.Parse:

 Car car = new Car(
    Enum.Parse(typeof(Make),data[0]),
    Enum.Parse(typeof(Model),data[1]),
    int.Parse(data[2]),
    int.Parse(data[3]),
    int.Parse(data[4]));

Обратите внимание, что вы должны добавить соответствующее исправление ошибоки т. д. для работы с недопустимыми строковыми значениями.

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