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()); // キャンセル済み