3 / 3 / 2
Регистрация: 24.05.2013
Сообщений: 158

В чем разница между 2 способами создания строки?

04.08.2016, 12:47. Показов 1462. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Создание строки из составных частей, посредством сложения или через String.Format

1. Какой вариант вы используете?
2. Есть ли разница между ними?

Пример 1

C#
1
2
3
4
    string A;
    int B = 957;
    A = "текст и значение " + B;
    A = String.Format("текст и значение {0}", B);
Пример 2

C#
1
2
3
4
5
    string A;
    int B = 957;
    int C = 842;
    A = "текст и значение " + B + ", а затем еще одно" + C;     
    A = String.Format("текст и значение {0}, а затем еще одно {1}", B, C);
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.08.2016, 12:47
Ответы с готовыми решениями:

Есть ли разница между способами создания Thread?
Тевирп будет ли разница // Метод, который планируется выполнять в отдельном потоке. static void Method() ...

В чем разница между new и override?
разница между new и override?

В чем разница между new и override?
Цитирую с msdn: Для чего нужно вообще использовать new? поведение методов одно и то же что и при override. Или мой код слишком...

9
71 / 66 / 29
Регистрация: 28.10.2013
Сообщений: 248
04.08.2016, 13:31
В первом примере я бы обычным "+" обошелся. Однако если после значения нужна точка - воспользовался бы string.Format
Приведу несколько более очевидный пример. У вас есть старое значение суммы денег (decimal), новое значение (decimal) и локализованное название валюты, нужно все это представить в виде строки, по пути округлив значения до 2 знаков после запятой.
C#
1
2
3
4
5
var oldAmount = 15.5942M;
var newAmount = 16.5508M;
var valute = "руб.";
 
var result = string.Format("{0:0.00} {2} => {1:0.00} {2}", oldAmount, newAmount, valute);
Вариант с "+" даже приводить лень)
1
3 / 3 / 2
Регистрация: 24.05.2013
Сообщений: 158
04.08.2016, 13:40  [ТС]
Цитата Сообщение от Lutk Посмотреть сообщение
более очевидный пример
Да, согласен, когда нужен именно отформатировать string.Format может неплохо укоротить длину кода. Однако я привел именно эти примеры поскольку, часто вижу именно такие случаи, где форматирование не нужно. Так вот вопрос, это дело привычки программиста или есть скрытые от моего глаза преимущества, и эти программисты познали великую истину?

P.S. Я привык к первому варианту. Применяю его обоих из этих двух примерах.
0
Эксперт .NET
 Аватар для kolorotur
17810 / 12961 / 3381
Регистрация: 17.09.2011
Сообщений: 21,250
04.08.2016, 13:40
Лучший ответ Сообщение было отмечено termir988 как решение

Решение

Цитата Сообщение от termir988 Посмотреть сообщение
1. Какой вариант вы используете?
Зависит от ситуации.
В вашем случае я бы использовал третий вариант:
C#
1
A = $"текст и значение {B}, а затем еще одно {C}";
Интерполяция разворачивается компилятором во второй вариант.

Цитата Сообщение от termir988 Посмотреть сообщение
2. Есть ли разница между ними?
Вариант с форматированием будет чуть медленнее (может, пару микросекунд), но это не критично.
Выбирайте более читаемый код.

Я вот с выходом шестого шарпа влюбился в интерполяцию. Чувствую себя настоящим ПоХаПистом
1
3 / 3 / 2
Регистрация: 24.05.2013
Сообщений: 158
04.08.2016, 13:43  [ТС]
Цитата Сообщение от kolorotur Посмотреть сообщение
Выбирайте более читаемый код.
Так вот мне одному кажется, что читаемый код это
_MSForm = new MsForm("Сохранение", "Сохранено " + (lMFile.Count - Errors) + "/" + lMFile.Count + " файлов.", true);
(Т.Е. со сложением)
0
Эксперт .NET
 Аватар для kolorotur
17810 / 12961 / 3381
Регистрация: 17.09.2011
Сообщений: 21,250
04.08.2016, 13:55
Цитата Сообщение от termir988 Посмотреть сообщение
мне одному кажется, что читаемый код это
А он на момент написания любой будет читаемым казаться — вы же его пишете здесь и сейчас, знаете о чем он.
Чтобы проверить читаемость кода по-настоящему, откройте какой-нибудь из своих старых проектов хотя бы годовалой давности, найдите подобное место и попробуйте сходу определить, какая строка будет на выходе.
А еще лучше, попросите это сделать кого-нибудь из ваших знакомых.
Получится — значит с читаемостью всё ОК
0
3 / 3 / 2
Регистрация: 24.05.2013
Сообщений: 158
04.08.2016, 13:58  [ТС]
Цитата Сообщение от kolorotur Посмотреть сообщение
Получится — значит с читаемостью всё ОК
Вот тут сразу 2 загвоздки, чтоб прочесть такой код, мне еще год прожить надо. (Только начал писать)
Так еще и знакомых нет. Только форум, только хардкор.
0
Эксперт .NET
 Аватар для kolorotur
17810 / 12961 / 3381
Регистрация: 17.09.2011
Сообщений: 21,250
04.08.2016, 14:02
Цитата Сообщение от termir988 Посмотреть сообщение
Только начал писать
Тогда можете смотреть чужой код, где идет работа со строками.
Если даже вам, новичку, сразу будет понятно что автор кода делает, значит это читаемый код, можете брать пример.
0
3 / 3 / 2
Регистрация: 24.05.2013
Сообщений: 158
04.08.2016, 14:06  [ТС]
Цитата Сообщение от kolorotur Посмотреть сообщение
Тогда можете смотреть чужой код, где идет работа со строками.
Если даже вам, новичку, сразу будет понятно что автор кода делает, значит это читаемый код, можете брать пример.
Как и сказал, в состоянии прочесть оба, (Ну теперь и три варианта), все пишут по разному, учусь сам, приходится читать.
Однако сам пишу через +. Хотя интерполяция симпатична, возможно стоит...
0
Эксперт .NET
 Аватар для kolorotur
17810 / 12961 / 3381
Регистрация: 17.09.2011
Сообщений: 21,250
04.08.2016, 14:12
Цитата Сообщение от termir988 Посмотреть сообщение
Однако сам пишу через +
Ну если вам такой стиль нравится, не ухудшает читаемость и не производится в цикле, то пользуйтесь на здоровье.
Инструменты в языке на то и даны, чтобы их использовать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.08.2016, 14:12
Помогаю со студенческими работами здесь

В чем разница между несколькими if и if + else if?
зачем нужно if else? читал для удобства пишут. if(..){} else if(..){} else можно записать так: if(..)

В чем разница между call и callvirt
Вопрос касательно IL кода программы. Вычитал у Рихтера, что разница между командами call и callvirt при применении к невиртуальному методу...

В чем разница между EndInvoke и BeginInvoke?
Если выполнить в отдельном потоке нижеследующие конструкции: if (this.InvokeRequired) { ...

В чем разница между Task и Thread?
В чем разница между Task и Thread и когда что лучше использовать? Если для написания сервера который будет одновременно отправлять 20...

В чем разница между int16 и int32?
Часто приходится конвертировать в int, для этого прописываю a = Convert.ToInt32 (b); А чем отличается Convert.ToInt16 и в каких...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

Новые блоги и статьи
Вопросы на собеседованиях по микросервисам
ArchitectMsa 27.03.2025
Работодатели ищут не просто разработчиков, знающих базовые концепции, а специалистов, разбирающихся в тонкостях масштабирования, отказоустойчивости и производительности. Сейчас на первый план выходят. . .
Взаимодействие Python с REST API
py-thonny 27.03.2025
REST API - это архитектурный стиль взаимодействия компонентов распределённого приложения в сети. Python располагает функциональным набором инструментов для работы с REST API и основная библиотека для. . .
sshd restrictions, ssh access limitations
jigi33 26.03.2025
sshd restrictions | ssh access limitations рестрикции доступа на сервер sshd статья: https:/ / www. golinuxcloud. com/ restrict-allow-ssh-certain-users-groups-rhel
Компиляция C++ с Clang API
NullReferenced 24.03.2025
Компиляторы обычно воспринимаются как черные ящики, которые превращают исходный код в исполняемые файлы. Мы запускаем компилятор командой в терминале, и вуаля — получаем бинарник. Но что если нужно. . .
Многопоточное программировани­е в C#: Класс Thread
UnmanagedCoder 24.03.2025
Когда запускается приложение на компьютере, операционная система создаёт для него процесс - виртуальное адресное пространство. В C# этот процесс изначально получает один поток выполнения — главный. . .
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
Образование и практика
Igor3D 21.03.2025
Добрый день А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru