Novo no .Net Core 3.0 / C # 8.0 (se o seu ambiente de trabalho permitir que você atualize seu projeto) é uma instrução de troca abreviada que parece um pouco enumerada. No final do dia, é a mesma declaração antiga de chave chata que usamos há anos.
A única diferença real aqui é que a declaração do switch ganhou um novo terno.
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)),
};
Você notará que o código acima do qual copiei daqui está realmente usando uma enumeração como parâmetro.
Não é exatamente o que você deseja (e confie em mim, eu queria algo parecido com o que o OP está solicitando há muito tempo), mas eu realmente sinto que isso é um ramo de oliveira da MS. JMO.
Espero que ajude alguém!