Это не имеет значения в этом случае.
"Count: " + i
компилируется до
String.Concat("Count: ",i)
String.Concat имеет несколько перегрузок, и я считаю, что выбрана перегрузка Concat(Object, Object)
(поскольку единственным общим предком string и int является object).
Внутренняя реализация такова:
return (arg0.ToString() + arg1.ToString());
Если вы позвоните
"Count: " + i.ToString()
тогда он выбирает перегрузку Concat(String, String)
, так как оба являются строками.
Так что по всем практическим вопросам, в сущности, он делает то же самое - он неявно вызывает i.ToString ().
Я обычно опускаю .ToString в случаях, подобных описанным выше, потому что он просто добавляет шум.