Да, конечно — это предпочтительный вариант. Но если в проекте уже используется другой механизм ресурсов — приходится интегрировать уже существующее решение.
Да, если проект пишется с нуля, то особо таким заниматься не потребуется, но если есть унаследованный код, написанный на старых версиях MVC, а в нем есть кастомные HtmlHelpers вида Html.MyHelper(), то перенести их в новую версию будет удобно через тег-хэлперы. Да и не очень сложно.
Да, именно поэтому даже и переименовали в ASP.NET Core 1.0 вместо ASP.NET 5 — слишком все отличается. И трудно представить, что кто-то в течение ближайшего года будет переводить продакшен сайты на него.
Мне кажется, в 99.9% случаев достаточно просто вызвать текущий список и никакой проблемы не будет, чем добавлять локи и получать проблемы в производительности. Но представлять как все работает — полезно для разработчика.
Да, в последних релизах C# старается брать что-то от динамических и функциональных языков, и я считаю, что это здорово. Например, string interpolation в C# 6 хорош (взятый из Ruby).
Насчет красоты — конечно, субъективно, но по задумке команды разработчиков C# новый оператор как раз для того случая. Да и для всех случаев, когда можно убрать if (smth != null).
Нет,?.. — только NRE, а вот Volatile.Read / Interlocked.CompareExchange старается решить.
Да, это breaking changes, можно почитать stackoverflow.com/questions/12112881/has-foreachs-use-of-variables-been-changed-in-c-sharp-5
en.wikipedia.org/wiki/Elvis_operator
Нет,?.. — только NRE, а вот Volatile.Read / Interlocked.CompareExchange старается решить.
Но и?.. все равно легче, потому что никакие дополнительные методы не нужны.
1. Это не очень красиво.
2. Используем не самый последний список подписчиков.
Стандартная конфигурация.
Спасибо за такой новогодний подарок!
А можете рассказать, мне очень интересно!
Спасибо за интересный пятничный пост.