C # Пользовательский тип данных с «выбором»

1

Мне нужен пользовательский тип данных для статуса заказа, как это можно сделать на С#? Ниже приведен пример того, что я имею в виду.

Заказ может быть в 4 состояниях:
- В очереди
- Обработка
- Перевозка
- Получено

class Order {
    public OrderStatus status { get; set; }
}

Order myorder = new Order();
myorder.status = OrderStatus.queue;

...

if (myorder.status == OrderStatus.received) 
{
    ...
}

Как определить класс OrderStatus, чтобы у него были четыре варианта выбора?

ура

  • 1
    Вы имеете в виду перечисление? msdn.microsoft.com/en-us/library/sbbt4032.aspx
  • 0
    Почему бы не создать структуру или другой класс?
Показать ещё 2 комментария
Теги:
oop
types

4 ответа

4
Лучший ответ
enum OrderStatus {
    InQueue,
    Handling,
    Shipping,
    Received
}
  • Вы можете или не должны указывать его в зависимости от ваших потребностей
  • Вам может потребоваться или не нужно устанавливать определенные целочисленные значения для каждого элемента перечисления. Как только вы начнете упорствовать в них, вы никогда (ну, было бы проще не хотеть) изменить порядок. Назначение определенных значений позволяет вам переупорядочивать и группировать их способами, которые могут иметь смысл и т.д....

В качестве примера:

enum OrderStatus {
    NewOrder = 1,

    OnHold = 6,
    CancelledOrder = 9,

    // Approval States
    WaitingApproval = 7,
    ApprovalRejected = 8,

    // Processing
    InQueue = 2,
    Handling = 3,

    // We've done our job!
    Shipping = 4,
    Received = 5
}
2

Используйте перечисление, которое представляет собой "набор возможных значений",

public enum OrderStatus
{
    InQueue,
    Handling,
    Shipping,
    Received
}

Переменная этого типа будет использоваться как:

public OrderStatus myStatus;
myStatus = OrderStatus.Shipping;

if (myStatus == OrderStatus.Shipping)
   ...
1

Объявить перечисление:

public enum OrderStatus
{
    InQueue,
    Handling,
    Shipping,
    Received 
}

Здесь вы можете прочитать больше.

  • 0
    @ThorstenDittmar, чем вы для разъяснения.
0

Используйте Enum для этого:

public enum Orderstatus{ 
    InQueue, 
    Handling, 
    Shipping, 
    Received 
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню