Игорь Кровокон уже сказал это, но я хотел немного уточнить.
Почему, по вашему мнению, количество номеров в гостинице - это номер? «12» - это не число. Это строка, содержащая пару цифр. Вы не можете взять квадратный корень из комнаты № 153, но вы можете сделать это с номером 153.
Номер гостиничного номера не behave в качестве номера. Число - математическое понятие и может быть представлено текстовым способом по-разному. 14 может быть записано как XIV в римских цифрах, «четырнадцать» или 0xfe в шестнадцатеричном виде или 11111110 в двоичном формате. Но персонал отеля, скорее всего, даст вам очень странный вид, если вы попросите «номер один-один-один-один-один-один-один-ноль».
Номера гостиничных номеров не являются математическими числами, поэтому они не должны быть представлены целыми числами.
Есть ли они тогда? Да, более или менее, но у них есть несколько дополнительных ограничений, как вы заметили.
Не каждая строка является действительным номером отеля. «14» - это хорошо, но «Арбуз» - нет.
В идеале это должно быть представлено как абстрактный тип данных, который обертывает строку и гарантирует, что в строке не будет никаких цифр.
На практике, конечно, вы вряд ли столкнетесь с множеством проблем, если вы выберете простой выход и обозначите номера комнат как ints, так и строки. Но лучшим дизайном будет тот, который обеспечивал бы, чтобы номера комнат вели себя как номера комнат. Ни строки, ни ints не делают этого.
Никогда не думал о том, чтобы приблизиться к этому. Переменная никогда не будет использоваться в арифметических операциях. Это действительно просто идентификатор, который использует большая сеть отелей, чтобы отличить установки системы управления имуществом. Я видел и слышал, как это называлось как «ID» и «number». Последнее - это то, что застряло, так как это то, что я слышал в первую очередь. В любом случае идентификатор является одной из переменных, которые передаются некоторым методам/функциям WCF в моем приложении. – Lenard