C #: перечисления приводят себя как строки или целые числа в зависимости от ситуации - PullRequest
3 голосов
/ 06 мая 2010

Если у меня есть перечисление:

public enum VehicleType
{
    Car = 0,
    Boat = 1,
    Bike = 2,
    Spaceship = 3
}

и я тогда делаю:

int X = 10;
VehicleType vt = (VehicleType)2;
X = X + vt;
Console.WriteLine("I travel in a " + vt + " with " + X + " people.");

Каким должен быть вывод в C #?

Ответы [ 4 ]

6 голосов
/ 06 мая 2010

In X = X + vt; vt будет приведено к int. В "I travel in a " + vt + " with " + X + " people." vt будет заменен на vt.ToString (), который напечатает имя перечисления.

0 голосов
/ 06 мая 2010

Как уже упоминалось, вы просто получаете целое число.

Это потому, что базовый тип enum является целым числом, но его можно изменить на любой другой тип значениянапример, public enum VehicleType : ushort.

Чтобы лучше обрабатывать эти имена, класс Enum имеет несколько удобных функций (например, GetName () , IsDefined () или Parse () ).

Просто чтобы ответить на вопрос Так как же вы можете сказать, что перечисление представляется в виде int в том, что вы только что сказали? из комментариев: взгляните на http://msdn.microsoft.com/en-us/library/sbbt4032.aspx (особенно прилично посмотрите на последний пример, используя Flags ).

0 голосов
/ 06 мая 2010

Они представлены как целые числа.Я хотел бы, чтобы они могли быть представлены как объекты!

0 голосов
/ 06 мая 2010

Базовым типом перечисления является int по умолчанию. Это также может быть байт, sbyte, short, ushort, uint, long или ulong, если явно указано.

X = X + vt будет ошибка, потому что это должно быть явное приведение.

Если бы это было X += (int)vt;, это было бы:

«Я путешествую на велосипеде с 12 людьми».

потому что при использовании Console.WriteLine вызываются методы всех переменных ToString (), поэтому дается строковое представление Enum (enum равно 2, что соответствует Bike, поэтому Bike возвращается).

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