Nullable struct vs class

У меня есть простая структура, которая содержит два поля; один хранит объект, а другой сохраняет DateTime. Я сделал это, потому что я хотел хранить объекты в словаре, но также с отметкой DateTime.

У меня есть метод, который возвращает мою структуру, и теперь я решил, что метод также должен возвращать значение null, поэтому я сделал свою структуру нулевой. Я теперь задаюсь вопросом, следует ли мне просто сделать мою структуру классом, чтобы это был ссылочный тип?

Ответы

Ответ 1

В этом случае, да, возможно, яснее сделать вашу структуру классом.

Что касается обоснования, вы по существу создаете специализированный Tuple. Интересно отметить, что дизайнеры библиотеки решили сделать .NET 4 Tuple класс, а не структуру. (Эта страница является создателем кортежа и связана с различными классами экземпляров кортежей)

Ответ 2

Либо должно быть хорошо, на самом деле (пока struct неизменен). A DateTime и ссылка не должна быть достаточной, чтобы сделать ее негабаритной.

Я предполагаю, что вы используете его как значение (а не ключ) в словаре? Если в качестве ключа вам необходимо переопределить Equals и GetHashCode(), независимо от struct vs class.