Скомпилированный код вызовет метод String.Concat, и если вы передадите ему любые нестроковые аргументы, перед конкатенацией он вызовет их методы ToString. Метод ToString есть у всех типов, а это означает, что вы можете добавлять к строке значения любого типа.