Здесь происходит то, что сумма оценивается слева направо, и это приводит к выполнению сложения другого типа, чем вы ожидаете.В C # вы можете добавить две строки.Если вы добавите "foo"
к "bar"
, тогда вы получите строку "foobar"
.Если вы добавите строку и число вместе, то он преобразует число в строку и добавит две строки вместе.Итак, "foo"+13
приводит к "foo13"
.
. То, что происходит в вашем примере, довольно сложно.Начиная изнутри, у вас есть: int.Parse(textBox3.Text)
.Это займет textBox3.Text
, что составляет "2"
, и преобразует его в число 2
.Затем вы делаете textBox2.Text + (int.Parse(textBox3.Text)
, который получает строку "1"
, а затем добавляет к ней число 2.Это приводит к преобразованию числа 2
в строку "2"
, а затем добавляет "1"+"2"
, давая в качестве ответа строку "12"
, поскольку строки добавляются путем их объединения.Затем вы делаете int.Parse(textBox2.Text + (int.Parse(textBox3.Text))
, который преобразует строку "12"
в число 12
.Вы также делаете int.Parse(textBox1.Text)
, что дает число 0
.Итак, на данный момент вы добавляете "" + 0 + 12
.Он делает это слева направо, сначала добавляя ""
к 0
.Это приводит к преобразованию 0
в "0"
, а "" + "0"
дает "0"
.Затем мы добавляем "0" + 12
.Когда мы делаем это, 12
преобразуется в "12"
, а "0"+"12"
дает "012"
.
Не внося больших изменений, вы можете получить правильный результат, просто изменив скобки.Если все числа были сложены вместе до того, как какое-либо из них будет добавлено в строки, вы получите правильный результат.Мы можем сделать это с помощью скобок.
textBox4 = "" + (int.Parse(textBox1.Text) + int.Parse(textBox2.Text) + int.Parse(textBox3.Text));
Короче говоря, очень важно обратить внимание на то, что происходит в каком порядке и на какие типы, потому что добавление двух строк совершенно отличается от добавления двух чисел.