![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| transkriptsiya |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 101 Регистрация: 17.1.2008 Репутация: нет Всего: нет |
Console.WriteLine("Welcome {0}", userName);
выводим на консоль переменную Console.WriteLine ("Welcome " + userName); делает абсолютно тоже подскажите зачем заморочиваються с {0} ? |
|||
|
||||
| boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: нет Всего: 35 |
В таком простом примере как ты привел, возможно ты и прав.
Но в более сложных конструкциях, когда есть более 1 переменной в стринге проще написать:
-------------------- Никогда не говори никогда |
|||
|
||||
| transkriptsiya |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 101 Регистрация: 17.1.2008 Репутация: нет Всего: нет |
ок. понятно
|
|||
|
||||
| Arantir |
|
||||
|
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 1 Всего: 55 |
"Welcome " + userName - это конкатенация строк.
"Welcome {0}" - это форматированная строка. Это две совсем разные вещи, использующиеся при разных обстоятельствах. Но по стечению случая обе используются в одной функции и вызывают непонятки у новичков. Console.WriteLine("{0}", var) == Console.WriteLine(String.Format({0}, var)); Лишь для упрощения используется общая семантика. Форматирование использует конкатенацию строк. Но все это инкапсулировано внутри форматирования и упрощает жизнь. Формат:
Конкатенация:
Как можно заметить, для удобного вывода каких-то данных пользователю был придуман String.Format(). В то время как для внутернних служебных операций более понятным действием представляется простая конкатенация. Поскольку и конкатенация и String.Format() возвращают строковой тип, то они взаимозаменяемы практически везде. Все зависит от целесообразности пользования того или иного. Это сообщение отредактировал(а) Arantir - 2.12.2012, 15:10 -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
||||
|
|||||
| transkriptsiya |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 101 Регистрация: 17.1.2008 Репутация: нет Всего: нет |
спасибо. Разницу прочувствовал.
|
|||
|
||||
| gambit |
|
|||
![]() Эксперт ![]() ![]() ![]() Награды: 1 Профиль Группа: Комодератор Сообщений: 1359 Регистрация: 25.6.2006 Где: я? Репутация: 3 Всего: 40 |
Первый вариант проще вынести в ресурсы, например для мультиязычности, при работе с форматами строк, в ресурсы выносится только она, при прямой контатации, необходимо выести каждый кусок.
|
|||
|
||||
| mihryak |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 10 Всего: 36 |
Нет, прямая конкатенация, по-хорошему, должна использоваться только в случае соединения двух строк. Если строк больше, стоит использовать либо string.Format, либо string.Concat, либо StringBuilder (тут как раз в зависимости от целесообразности стоит выбирать). Причина кроется в принципах работы со строками: при прямой конкатенации через "+" после каждого добаления будет создаваться промежуточная строка, к которой будет прибаляться следующий операнд. Это приводит к перерасходу и "замусориванию" памяти. StringBuilder, string.Concat и string.Format обрабатывают такие ситуации гораздо эффективнее на уровне внутренней работы с памятью. Расписывать детали не хочется, достаточно погуглить, что есть и зачем используется StringBuilder - ответ и к другим опциям будет применим. |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | .NET для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |