Существует ли какая-либо разница между использованием {0}
и +
, так как они выполняют одну и ту же работу по печати длины на экране:
Console.WriteLine("Length={0}", length);
Console.WriteLine("Length=" + length);
Существует ли какая-либо разница между использованием {0}
и +
, так как они выполняют одну и ту же работу по печати длины на экране:
Console.WriteLine("Length={0}", length);
Console.WriteLine("Length=" + length);
В вашем тривиальном примере нет разницы. Но есть очень веские причины предпочесть форматированный вариант ({0}
): он значительно облегчает локализацию международного программного обеспечения и значительно упрощает редактирование существующих строк третьими сторонами.
Представьте себе, например, что вы пишете компилятор, который создает это сообщение об ошибке:
"Cannot implicitly convert type 'int' to 'short'"
Вы действительно хотите написать код
Console.WriteLine("Cannot implicitly convert type '" + sourceType + "' to '" + targetType + "'");
? Боже мой нет. Вы хотите поместить эту строку в ресурс:
"Cannot implicitly convert type '{0}' to '{1}'"
а затем напишите
Console.WriteLine(FormatError(Resources.NoImplicitConversion, sourceType, targetType));
Потому что тогда у вас есть свобода решать, что вы хотите изменить это:
"Cannot implicitly convert from an expression of type '{0}' to the type '{1}'"
или
"Conversion to '{1}' is not legal with a source expression of type '{0}'"
Эти варианты могут быть сделаны позже английскими специалистами без необходимости внесения изменений в код.
Вы также можете перевести эти ресурсы на другие языки, снова без изменения кода.
Начать всегда с помощью форматирования строк; когда вам нужно написать локализованное программное обеспечение, которое правильно использует строковые ресурсы, вы уже привыкли.
Вторая строка создаст строку и напечатает строку. Первая строка будет использовать составное форматирование, например string.Format.
Здесь есть некоторые веские причины использовать композитное форматирование.
Есть разница.
Пример:
Console.WriteLine("the length is {0} which is the length", length);
Console.WriteLine("the length is "+length+" which is the length");
+
объединяет две строки, {0}
является заполнителем для строки, которую нужно вставить.
{n}
является заполнителем, который может использоваться с несколькими опциями. где n - число
В вашем примере это будет иметь значение, и конечный результат будет таким же, что и конкатенация двух строк. Однако в чем-то вроде
var firstName = "babba";
var lastName ="abba";
var dataOfBirth = new Date();
Console
.Write(" Person First Name : {0} | Last Name {1} }| Last Login : {2:d/M/yyyy HH:mm:ss}",
firstName,
secondName,
dateOfBirth);
он обеспечивает удобный для чтения интерфейс с легким форматированием
{n}
где n >= 0
позволяет подставлять значения в порядке их появления в строке.
string demo = "demo", example = "example";
Console.WriteLine("This is a {0} string used as an {1}", demo, example);
+
позволяет объединить две или более строки вместе.
Console.WriteLine("This is a " + demo + " string used as an " + example);