Open2

C# 列挙型

しみゆーしみゆー

列挙型

// 既定の修飾子はinternal
public enum OrderStatus
{
    // 自動でintの連番が割り振られる
    Unshipped,  // 0

    PreparingToShip,  // 1

    Shipped,  // 2

    Cancelled,  // 3
}

列挙定数に任意の値を設定する

public enum OrderStatus
{
    // 1で採番を始める場合
    Unshipped = 1,  // 1

    PreparingToShip,  // 2

    Shipped,  // 3

    Cancelled,  // 4
}

列挙定数を使用する

列挙定数、連番として振られた数字、どちらも文字列として使用することができる。

enum OrderStatus
{
    Unshipped = 1,

    PreparingToShip,

    Shipped,

    Cancelled,
}

Console.WriteLine(OrderStatus.Shipped); // Shipped
Console.WriteLine(OrderStatus.Shipped.ToString()); // Shipped
Console.WriteLine(OrderStatus.Shipped.ToString("D")); // 3
Console.WriteLine(OrderStatus.Shipped.ToString("X")); // 00000003
しみゆーしみゆー

Enumに対して別の文字を紐づける

public enum OrderStatus
{
    Unshipped = 1,

    PreparingToShip,

    Shipped,

    Cancelled,
}

public static class OrderStatusExtensions
{
    private static readonly Dictionary<OrderStatus, string> _orderStatuses = new()
    {
        { OrderStatus.Unshipped, "未発送" },
        { OrderStatus.PreparingToShip, "発送準備中" },
        { OrderStatus.Shipped, "発送済み" },
        { OrderStatus.Cancelled, "キャンセル済み" },
     };

    public static string GetValue(this OrderStatus key)
    {
        return _orderStatuses[key];
    }
}

// 拡張メソッドとして追加したGetValueを使用する
Console.WriteLine(OrderStatus.Unshipped.GetValue()); // 未発送
Console.WriteLine(OrderStatus.PreparingToShip.GetValue()); // 発送準備中
Console.WriteLine(OrderStatus.Shipped.GetValue()); // 発送済み
Console.WriteLine(OrderStatus.Cancelled.GetValue()); // キャンセル済み