Сохранение структуры в качестве типа значения - Какие типы я могу использовать / вернуть? - PullRequest
1 голос
/ 24 марта 2012

Я хочу хранить много маленьких элементов (ну, несколько тысяч) из 3 или около того байтовых значений, так что я думаю об использовании структуры.В чем я не уверен, так это в том, как сохранить его как тип значения, например, если я просто сохраню 3 байта как байты и переопределю ToString (), GetHashCode () и Equals (), он останется типом значения, верно?Но что делать, если я хочу вернуть 3 байта в виде списка (вернуть, а не хранить!), Поэтому я делаю

public List<byte> GetValues
    {
      get
        {
             return new List<byte>(3) { byte1, byte2, byte3 };
        }
    }

.. но не будет ли это сейчас портить?Будет ли часть данных этой структуры теперь в куче?

Я где-то читал об этом материале, но не могу вспомнить, где и не могу найти его снова.

Спасибо за любой совет, который вы можете дать мне.

Ричард

1 Ответ

2 голосов
/ 24 марта 2012

Нет, это просто свойство - список создается при доступе к свойству, но это все. Вы не объявили никаких дополнительных полей в вашем типе.

Даже если вы действительно объявили поле типа List<byte>, ваш тип все равно будет типом значения - все структуры являются типами значений - это просто одно из полей будет иметь значение, которое является ссылкой. Это относительно редко, но не случайно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...