Pull to refresh
18
Станислав Ушаков@JustStas

Senior .Net Developer

11
Subscribers
Send message
Да, конечно — это предпочтительный вариант. Но если в проекте уже используется другой механизм ресурсов — приходится интегрировать уже существующее решение.
Да, если проект пишется с нуля, то особо таким заниматься не потребуется, но если есть унаследованный код, написанный на старых версиях MVC, а в нем есть кастомные HtmlHelpers вида Html.MyHelper(), то перенести их в новую версию будет удобно через тег-хэлперы. Да и не очень сложно.
Я просто написал пример по образу и подобию примера в статье, так-то там лямбду надо использовать и Action.
А теперь более каверзный вопрос на тему вопроса номер 7.
delegate void SomeMethod();

static void Main(string[] args)
{
            List<SomeMethod> delList = new List<SomeMethod>();
            foreach (int i in System.Linq.Enumerable.Range(1, 10))
            {
                delList.Add(delegate { Console.WriteLine(i); });
            }

            foreach (var del in delList)
            {
                del();
            }
}


Ответ
Правильный ответ: какую версию C# вы используете? При C# >= 5: будут выведены числа от 1 до 10, для более старых — десять десяток.
Да, это breaking changes, можно почитать stackoverflow.com/questions/12112881/has-foreachs-use-of-variables-been-changed-in-c-sharp-5
Можно написать свой кастомный runat тег-хэлпер :-)
Да, именно поэтому даже и переименовали в ASP.NET Core 1.0 вместо ASP.NET 5 — слишком все отличается. И трудно представить, что кто-то в течение ближайшего года будет переводить продакшен сайты на него.
Вопросительный знак — как прическа. Вроде бы, поэтому.
en.wikipedia.org/wiki/Elvis_operator
Мне кажется, в 99.9% случаев достаточно просто вызвать текущий список и никакой проблемы не будет, чем добавлять локи и получать проблемы в производительности. Но представлять как все работает — полезно для разработчика.
Да, точно, некоторые старые обработчики до .NET 2 используют свои классы.
В видео вот в этом курсе разработчики употребляют название Elvis-operator mva.microsoft.com/en-US/training-courses/developer-productivity-what-s-new-in-c-6-8733
Спасибо за комментарий! Да, как показывает MSIL, присвоение и проверка на null — это очень быстро.
Да, в последних релизах C# старается брать что-то от динамических и функциональных языков, и я считаю, что это здорово. Например, string interpolation в C# 6 хорош (взятый из Ruby).
А как же точка под вопросительным знаком? ?.
Насчет красоты — конечно, субъективно, но по задумке команды разработчиков C# новый оператор как раз для того случая. Да и для всех случаев, когда можно убрать if (smth != null).

Нет,?.. — только NRE, а вот Volatile.Read / Interlocked.CompareExchange старается решить.
Да, тоже подумал, когда читал, почему-то Джон не включил это в статью.
Но и?.. все равно легче, потому что никакие дополнительные методы не нужны.
Да, можно — это решит NullReferenceException, но:
1. Это не очень красиво.
2. Используем не самый последний список подписчиков.
Спасибо за ссылку! Но мне и для Nanta, и для MSBuild'а больше нравится писать кастомные таски отдельно, в своих сборках. Так разделение логики лучше.
Логин: juststas
Стандартная конфигурация.
Спасибо за такой новогодний подарок!
А рассказать вам, как я преодолел подземное озеро при помощи пары носков, перочинного ножа и упаковки из-под жвачки?

А можете рассказать, мне очень интересно!
Спасибо за интересный пятничный пост.
Perl поддерживает оба варианта.
do_something() if ($flag);

if ($flag) do_something();

Information

Rating
Does not participate
Location
Россия
Registered
Activity