La novità di .Net Core 3.0 / C # 8.0 (se l'ambiente di lavoro consente di aggiornare il progetto) è un'istruzione a commutazione breve che sembra in qualche modo enum-ish. Alla fine della giornata è la stessa vecchia noiosa dichiarazione di switch che usiamo da anni.
L'unica vera differenza qui è che l'istruzione switch ha ottenuto un nuovo seme.
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)),
};
Noterai che il codice sopra il quale ho copiato da qui , in realtà sta usando un enum come parametro.
Non è esattamente quello che vuoi (e fidati di me, ho voluto qualcosa di simile a quello che l'OP richiede da molto tempo), ma in realtà mi sento come se fosse un ramo di ulivo proveniente dalla SM. JMO.
Spero che aiuti qualcuno!