TextBox.Text - это строковое свойство
но если вы назначаете int, decimal..etc, то он работает!!
int x = 5;
Textbox1.Text = x; // it works
любое тело знает, почему я могу сказать?
Из-за Неявное преобразование.
Здесь - полный список неявных числовых преобразований
Как отметил Сонни, из здесь
Если опция Strict включена, вышесказанное пример вызывает ошибку компилятора. Если Опция Strict выключена, однако преобразование выполняется неявно, хотя это неявное преобразование может привести к ошибке во время выполнения. Для эта причина, вы всегда должны использовать Option Strict On.
С# позволяет неявное преобразование в String из числового типа. Таким образом, это работает, потому что это эквивалентно:
TextBox1.Text = x.ToString();
Типы значений, такие как int, double и т.д., имеют метод ToString(), который автоматически вызывается для вас. Вы можете это увидеть, набрав x.ToString(); Что действительно происходит под капотом, так это то, что тип значения "помещается в коробку" в соответствующий ссылочный тип (класс), а класс имеет метод ToString.
как уже указывалось, это происходит из-за иммического преобразования.
Другой пример:
?Console.WriteLine(1)
1
?Console.WriteLine("1")
1
потому что
Console.WriteLine(1) == Console.WriteLine(1.ToString())