Как работает конкатенация строки с числом, если у них разные типы?
начал изучать C# и в голове появился вопрос по поводу фрагмента кода ниже.
int x = 10;
Console.WriteLine("x " + x);
Здесь "x " + x происходит конкатенация строки и переменной? Если да, то это как-то нелогично для меня (как для кодера на C++). Прошу объяснить что происходит.
Ответы (1 шт):
Автор решения: Алексей Шиманский
→ Ссылка
Знак "+" в C# может быть как оператором сложения, так и конкатенацией, в зависимости от ситуации. Если первым идёт строка, то под капотом данная надпись преобразуется в такую:
String.Concat(object, object),
получается
string str = String.Concat("x ", 10);
Сам метод выглядит внутри как-то так:
public static String Concat(Object arg0, Object arg1) {
if (arg0 == null) {
arg0 = String.Empty;
}
if (arg1 == null) {
arg1 = String.Empty;
}
return Concat(arg0.ToString(), arg1.ToString());
}
То есть по итогу к объекту применяется метод ToString(). В итоге получаем
String.Concat(string, string)