Оператор "?." не дал бы выполнить такой метод всё равно. Но если без него, то в теории да, могло быть и так. Но тогда и предупреждения анализатора бы не было, кстати.
Ну вот и не совсем понятно, почему он превращает именно в string.Format, а не в Concat. Конечно, явно есть случаи, когда так сделать нельзя, но кажется, что почти всегда интерполяцию вполне можно записать как сумму строк.
Не могли бы вы поподробнее пояснить, что вы имеете ввиду? @ValeryIvanov спросил, почему компилятор превращает интерполяцию в string.Format, а не в обычное a + b + c. Что означает "компилятор уже потом оптимизирует string.Format"? Вы имеете ввиду JIT?
Тут штука вот в чëм: ToString в любом случае будет вызван. Либо у исходной переменной, либо у ссылки, полученной после упаковки. В статье же говорится о том, как упаковки избежать, имея исключительно вызов ToString.
Что вы имеете ввиду под "ставятся"? В проекте анализатора у нас указана именно версия пакета (они отличаются). На рантайме обычно бралась библиотека, которая лежала рядом с исполняемым файлом, то есть правильная. А тут нам особенности GAC нанесли удар)
Зависит от ситуации) На эту тему писал статью "Всегда ли в C# есть упаковка при конкатенации со строкой и интерполяции?". Можете глянуть, если интересно)
Пока как можем) Возможно, в будущем что-то из этого будет автоматически разруливаться.
Оператор "?." не дал бы выполнить такой метод всё равно. Но если без него, то в теории да, могло быть и так. Но тогда и предупреждения анализатора бы не было, кстати.
О, интересное исследование) Ну, ничто не идеально, бывают такие вот осечки у разработчиков.
Ну, на эту тему в статье есть раздел "Оптимизации времени выполнения". Или мб какие-то конкретные примеры из статьи работают не так, как описано?
"Далее" это когда? При разборе IL?
.
Ну вот и не совсем понятно, почему он превращает именно в string.Format, а не в Concat. Конечно, явно есть случаи, когда так сделать нельзя, но кажется, что почти всегда интерполяцию вполне можно записать как сумму строк.
Не могли бы вы поподробнее пояснить, что вы имеете ввиду? @ValeryIvanov спросил, почему компилятор превращает интерполяцию в string.Format, а не в обычное a + b + c. Что означает "компилятор уже потом оптимизирует string.Format"? Вы имеете ввиду JIT?
Спасибо за разъяснение)
Ничего страшного, главное, что разобрались)
Тут штука вот в чëм: ToString в любом случае будет вызван. Либо у исходной переменной, либо у ссылки, полученной после упаковки. В статье же говорится о том, как упаковки избежать, имея исключительно вызов ToString.
В статье описано, что это зависит от того, подо что вы компилируете код. У вас net6?
Рад был помочь)
А вы действительно пробовали этот способ? Указанное вами событие, согласно документации, возникает, когда сборку загрузить не получилось.
А в указанном в статье случае она прекрасно загружается :).
Мы пробовали даже просто в начале Main загрузить сборку с указанием прямо конкретного пути, но она всё равно берётся из GAC.
Что вы имеете ввиду под "ставятся"? В проекте анализатора у нас указана именно версия пакета (они отличаются). На рантайме обычно бралась библиотека, которая лежала рядом с исполняемым файлом, то есть правильная. А тут нам особенности GAC нанесли удар)
(((
Забавно)))
Я тоже так подумал) Но maintainer MSBuild-а вроде достаточно уверено говорил, что это удобно и всё такое.
Нет проблем :). Если что, пишите, подскажем