Есть ли разница между конкатенацией и удержанием места в выходных данных C# или это вопрос предпочтений?
Я только начал работать с C# в первый раз, и, просматривая учебник, я ничего не нашел о разнице между конкатенацией (console.writeline("Hello" + user)
где пользователь является строковой переменной) и заполнитель (console.writeline("Hello {0}" , user
) где пользователь - строковая переменная) методы для вывода. Есть ли разница, или это просто, какой способ легче найти?
3 ответа
Это не совсем специфично для C#, многие языки поддерживают оба стиля. Последняя форма обычно считается "более безопасной", но я не могу привести какой-либо конкретной причины, почему. Это полезно, если элемент должен отображаться более чем в 1 месте или если вы хотите сохранить строку формата как константу. Посмотрите на эту ветку для получения дополнительной информации: когда лучше использовать String.Format против конкатенации строк?,
Использование форматеров строк, в отличие от конкатенации строк, почти полностью связано с удобочитаемостью. То, что они на самом деле делают и даже как они выполняют, достаточно близко к тому же.
Для такого простого случая оба выглядят хорошо, но когда у вас есть сложная строка с большим количеством значений, смешанных в строках формата, может получиться намного приятнее:
Вот лучший пример:
string output = "Hello " + username + ". I have spent " + executionTime + " seconds trying to figure out that the answer to life is: " + output;
против
string output = string.Format("Hello {0}. I have spent {1} seconds trying to figure out that the answer to life is: {2}"
, username, executionTime, output);
Как сказал Мэтт, удержание места считается более безопасным подходом, чем простая конкатенация, но я не уверен по этим причинам (мне нужно изучить это). Но да, одна вещь уверена, что Place Holding - это немного дороже, чем конкатенация с точки зрения производительности. Проверьте эту запись в блоге "Форматирование строк" Джона Скита.
Хотя производительность будет значительно повышена, только если вы используете заполнители примерно тысячи раз или около того.