Ваш запрос колеблется, он должен выглядеть примерно так
UPDATE student_subject
INNER JOIN subject_bsit
ON subject_bsit.subject_id = student_subject.sub_id
SET grade=?
where student_subject.student_id='" & Txtbox.Text & "' AND student_subject.sub_id = 1
. Нет, нет ничего на языке для проверки этого.
У Вас может быть a:
default:
throw new ArgumentOutOfRangeException("Invalid value or bug");
случай, но очевидно это - время выполнения, а не время компиляции.
Никогда не использовал его, но FxCop может быть полезным. Это поддерживает пользовательские правила записи. Конечно, это не проверка времени компиляции, но что-то, что может быть интегрировано в Ваши процессы.
К сожалению, вот не функция компилятора, чтобы сделать это для Вас.
Вместо того, чтобы иметь перечисление, имейте базовый класс или интерфейс. MyMethod определяется в интерфейсе.
Каждый каждый перечислимый участник теперь становится классом с различным поведением для myMethod. Если бы Вы добавляете класс (для расширения опций, в настоящее время Вы добавляли бы перечислимый объект), но не реализуйте myMethod, Вы получите ошибку компилятора.
наличие большого количества места в коде, где Вы обеспечиваете другое поведение в избранных операторах, является запахом, что Вы, возможно, должны использовать полиморфизм.
Править
Лучший совет, который я могу дать, состоит в том, чтобы создать модульные тесты на каждую функцию, которая полагается на оператор переключения, и назовите его для каждого значения в перечислении (можно получить значения во времени выполнения с членом GetValues на Классе Enum),