среда, 25 марта 2015 г.

Struct:Interface = Boxing?

interface IMyInterface { }
struct MyStruct : IMyInterface { }

class MyClass
{
    public void Method(IMyInterface value){ }
}

Вопрос №1: Будет упаковка структуры при передачи в метод Method()?


Вопрос №2: Как избежать упаковки?


воскресенье, 22 марта 2015 г.

Struct vs Class

На собеседованиях я не раз задавал вопрос: «В каких случаях вы предпочтёте использование структуру вместо класса?». 90% людей, почему-то думают, что их спрашивают о различиях структур и классов. И поэтому начинают рассказывать о том где хранятся значимые и ссылочные типы, о невозможность наследования структур и т. п. Хотя они говорят всё верно, но это не совсем то, что их спрашивают. В этой заметке я попытаюсь ответить на поставленный вопрос.

воскресенье, 15 марта 2015 г.

Event'ы, проблемы и способы борьбы с ними

Вот представьте себе, начинает кто-то работать .Net программистом. Изучает хорошо основы языка C#, разбирается с различиями значимых и ссылочных типов, даже хорошо понимает работу Garbage Collector'а и зачем нужны эфемерные сегменты. А спустя долгие годы, если с чем-то ему не приходится сталкиваться ежедневно, то оно напрочь забывается. Я легко могу представить, как веб-разработчик забудет синтаксис объявления событий – ведь они практически не используются в stateless парадигме веб-проектов. Если, по каким-то причинам, вы забыли эти особенности, то прошу под кат.

суббота, 14 марта 2015 г.

5 фактов о многопоточности в .Net, которые часто забывают

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