C# Зачем нужны перечисления?

Зачем нужны перечисления, ведь они то тоже самое что и обычный набор констант. Если можно укажите также особенности их использования

Использование перечислений позволяет сделать исходные коды программ более читаемыми, так как позволяют заменить «магические числа», кодирующие определённые значения на читаемые имена.

Например, практически каждый программист на C# менял цвет текста в консоли, и делали это с помощью использования перечисления ConsoleColor, где указывали текстом какой цвет нужно использовать. При чтении такого становиться сразу понятно каким цветом будет выводиться текст в консоли. Если бы такого не было, то нам бы пришлось читать команды следующего рода:

Console.ForegroundColor = ConsoleColor.Red;   // при использовании перечислений
Console.ForegroundColor = 12;         // при отказе от их использования 

Как по мне при чтении второй строки, становиться непонятным каким новым цветом будет выводиться текст в консоли (для понимания нужно было бы обращаться к отдельным таблицам хранящим данные о соответствии цвета и значения, что будет очень неудобным)

спасибо