Mới trong .Net Core 3.0 / C # 8.0 (nếu môi trường làm việc của bạn cho phép bạn nâng cấp dự án của mình) là một câu lệnh chuyển đổi tay ngắn có vẻ hơi enum-ish. Vào cuối ngày, đó là cùng một câu lệnh chuyển đổi nhàm chán cũ mà chúng ta đã sử dụng trong nhiều năm.
Chỉ có sự khác biệt thực sự ở đây là tuyên bố chuyển đổi có một bộ đồ mới.
public static RGBColor FromRainbow(Rainbow colorBand) =>
colorBand switch
{
Rainbow.Red => new RGBColor(0xFF, 0x00, 0x00),
Rainbow.Orange => new RGBColor(0xFF, 0x7F, 0x00),
Rainbow.Yellow => new RGBColor(0xFF, 0xFF, 0x00),
Rainbow.Green => new RGBColor(0x00, 0xFF, 0x00),
Rainbow.Blue => new RGBColor(0x00, 0x00, 0xFF),
Rainbow.Indigo => new RGBColor(0x4B, 0x00, 0x82),
Rainbow.Violet => new RGBColor(0x94, 0x00, 0xD3),
_ => throw new ArgumentException(message: "invalid enum value", paramName: nameof(colorBand)),
};
Bạn sẽ nhận thấy rằng mã ở trên mà tôi đã sao chép từ đây , thực sự đang sử dụng một enum làm thông số.
Đó không phải là chính xác những gì bạn muốn (và tin tôi đi, tôi đã muốn một cái gì đó tương tự như những gì OP yêu cầu trong một thời gian dài), nhưng tôi thực sự cảm thấy như đây là một nhánh ô liu từ MS. JMO.
Hy vọng nó sẽ giúp được ai đó!