Страницы

Поиск по вопросам

воскресенье, 16 февраля 2020 г.

Эквиваленты ли следующие операторы?

#c_sharp #строки


Допустим у меня есть инициализированная строка string s.
Являются ли следующие операторы эквивалентными в плане поведения? Генерируется ли
разный IL мне не важно.

// 1
s = s + "";

// 2
s = s ?? "";

// 3
s = $"{s}";


Если в каких-либо случаях есть отличия, то, пожалуйста, укажите их.
    


Ответы

Ответ 1



Да, все три выражения дают один и тот же результат при одинаковых параметрах. Различие могло быть только в обработке значения null, но во всех трех выражениях null будет заменен - пустой строкой.

Ответ 2



Являются ли следующие операторы эквивалентными в плане поведения? Это как спрашивать: Являются ли следующие действия одинаковыми: 4+2+2 4*2 6+2 Нет. Действия разные. Хотя результат одинаковый. Так что: Нет. Операторы разные и действия разные соответственно. Конкретно в даном случае РЕЗУЛЬТАТЫ будут эквивалентны. Результаты. Но не операторы. :) Поведение, собственно тоже будет немного отличатся. Вполне возможно что некоторые из этих вариантов будет немного быстрее (хотя они все быстрые). Но существенной разницы ты вряд ли получишь, даже, на детализированных тестах.

Комментариев нет:

Отправить комментарий