Пустая строка "", что соответствует String.Empty. Причина, по которой вы можете поставить "" в операторе case, но не "String.Empty", заключается в том, что "Empty" является полем класса "String", а "" на самом деле является значением константы.
В случаях допустимы постоянные значения, String.Empty является полем и может быть изменено во время выполнения. (В этом случае оно останется тем же, но не все статические поля каждого класса являются постоянными значениями.)
В случае 'if' это условие оценивается во время выполнения, а если не , требуется постоянное значение.
Надеюсь, это объясняет почему.