Показаны сообщения с ярлыком structures. Показать все сообщения
Показаны сообщения с ярлыком structures. Показать все сообщения

четверг, 6 июня 2013 г.

Использование изменяемых структур в свойствах классов

Блог переехал. Актуальная версия поста находится по адресу: http://aakinshin.net/ru/blog/dotnet/mutable-structures-as-property/.


Названия всех классов вымышленные,
все совпадения абсолютно случайны.

Занимался я как-то раз улучшением кода проекта. И наткнулся вот на такие строчки:

public class Image
{
  public Rectangle Bounds;
}

«Ай-яй-яй! Публичное поле в классе, как же нехорошо-то! Нужно срочно превратить его в свойство!» — подумал я. И превратил:

public class Image
{
  public Rectangle Bounds { get; set; }
}

Сделал я такое невинное изменение и сразу пошёл дальше рефакторить — ведь ещё такое количество кода нуждалось в улучшении! Ну а в конце решил я запустить на всякий случай Unit-тесты. Какого же было моё удивление, когда половина тестов упала. «Да как же так! Ведь я особо-то ничего и не менял!» Ну, поехали разбираться.

понедельник, 3 июня 2013 г.

Ручное размещение полей структуры в C#

Начнём с задачки. Имеется структура:

struct MyStruct
{
    public Int16 Value;
}

Требуется научится получать младший байт поля Value. Но сделать это нужно так, чтобы обеспечить максимально возможную производительность.