Как работает конкатенация строки с числом, если у них разные типы?

начал изучать 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)
→ Ссылка