Проверил, что именно там происходит. Вот два стека, которые генерируются в процессе работы вашей программы:
at CSharpFilter.Program.Throw() in CSharpFilter\Program.cs:line 40 // throw new Exception();
at CSharpFilter.Program.ThrowAndRethrow() in CSharpFilter\Program.cs:line 46 // Throw();
at CSharpFilter.Program.Throw() in CSharpFilter\Program.cs:line 40 // throw new Exception();
at CSharpFilter.Program.ThrowAndRethrow() in CSharpFilter\Program.cs:line 52 // throw;
at CSharpFilter.Program.Main(String[] args) in CSharpFilter\Program.cs:line 59 // ThrowAndRethrow();
Помимо разной глубины стеков (ну, это уж точно артефакт несоответствия mono и .NET), видно, что строки действительно разные.
Вообще говоря, здесь я действительно промахнулся, т.к. был введён в заблуждение собственными примерами. Стек при throw; всё же немного модифицируется, но в нём меняется только номер строки в пределах той функции, где было поймано исключение.
В статических C# и F# эта задача решается через dynamic или аналоги, например. И не будет никакого рантаймового оверхеда или рефлекшена — можно сделать такой динамический класс, свойства которого будет разворачиваться вот в эти же самые get(«Picture») из вышестоящего поста.
(да, ниже уже написали, зря не обновил страницу перед комментированием)
Ну, FirstOrDefault в середине цепочки для ссылочного типа — это почти гарантированный NullReferenceException. Если уверены, что элемент в коллекции всегда есть — нужно использовать просто First, чтобы это задекларировать.
Столь здравая политика будет, в том числе, способствовать развитию отрасли. Так что, пожалуй, через пару лет рынок Новой Зеландии уже не будет казаться таким бесперспективным.
А вот отсутствие записей в логе вам точно аукнется. Типичная ситуация вида «ничего не работает, но ничего не известно». Боретесь как-нибудь с этой ситуацией? Ну, может, стиль кодирования какой-то особенно устойчивый?
Необязательно рандомайзер — можно использовать просто программу для набора текста. То есть, например, notepad вполне себе является таким вот операторо-ориентированным квайном.
Весьма замечательно, что, начиная с этой версии, юникод в windows поддерживается с настройками по умолчанию. Так что костыли, описанные в статье Настройка поддержки русского языка в GVim (windows), больше не требуются.
В первом случае мы еще как-то можем VPN прикрутить, но второй-то случай никакой «микроинстанс на амазоне» не решит, разве нет?
Идея в том, что нормальные люди больше не будут хоститься на российских хостингах, если боятся, что их могут заблокировать. А блокировку на уровне наших провайдеров мы будем спокойно обходить с помощью VPN или любого из представленных в статье способов.
Это работает не для всех видов блокировок. В соответствии с последним дурацким законом блок делается по IP, а не по DNS. Возможно, ваш форум попал в список экстремистских материалов — это не тот список, который вступил в действие с 1 августа.
Помимо разной глубины стеков (ну, это уж точно артефакт несоответствия mono и .NET), видно, что строки действительно разные.
throw;
всё же немного модифицируется, но в нём меняется только номер строки в пределах той функции, где было поймано исключение.Текст статьи исправлен.
(да, ниже уже написали, зря не обновил страницу перед комментированием)
Не принципиально, но вообще-то в C есть тип bool, начиная с C99.
Идея в том, что нормальные люди больше не будут хоститься на российских хостингах, если боятся, что их могут заблокировать. А блокировку на уровне наших провайдеров мы будем спокойно обходить с помощью VPN или любого из представленных в статье способов.