Ваш первый фрагмент кода не работает по понятным причинам. Метод .Show
ожидает строку, а вы передаете ей целое число.
Существует метод .ToString()
, который вы можете использовать:
private void button2_Click(object sender, EventArgs e)
{
int i = 5;
MessageBox.Show(i.ToString());
}
Теперь давайте рассмотрим следующий фрагмент:
int i = 5;
MessageBox.Show("hoo" + i);
это на самом деле переводится компилятором в:
int i = 5;
MessageBox.Show(string.Concat("hoo", i));
, которая в основном является следующей .Concat
перегрузкой, принимающей 2 объекта в качестве аргументов и возвращающей строку в качестве результата. И поскольку метод MessageBox.Show
ожидает строку, он работает, так как это то, что возвращает метод .Concat
, который я показал вам.