Что произойдет, если вы решите изменить перечисление ModificationType
позже?Например:
private enum ModificationType
{
Insert = 0,
/* Oops, need a special insert type here */
InsertSpecial = 1,
Update = 2,
Delete = 3
}
Это, по общему признанию, надуманный пример.(Но, конечно, это не невозможно - предположим, что ваш enum
используется для ссылки на некоторую внешнюю зависимость, которая вносит критические изменения, скажем, в C API.)
Но если вы ссылаетесь на эти типы перечислений по значению, выдолжны отследить все ссылки на них.Вы хотите пройтись по своему коду, пытаясь выяснить, используется ли число 3 для ссылки на это перечисление или какую-то другую случайную константу?
Вместо этого вы должны использовать ModificationType.Delete
, чтобы у вас не былобеспокоиться об этих проблемах.Вот почему, в конце концов, существует тип enum
.
Нет снижения производительности за использование ModificationType.Delete
вместо 4, 5, 6 или любого другого.