Для информации int?
/ Nullable<T>
- это , а не тип ссылки; это просто «обнуляемый тип», что означает: структуру (по существу и int
и флаг bool
) со специальными правилами компилятора (проверки нуля, операторы и т. д.) и правилами CLI (для упаковки / распаковки). - это нет "целочисленного ссылочного типа" в .NET, если не считать бокс:
int i = 123;
object o = i; // box
, но это создает ненужный объект и имеет множество других связанных с этим проблем.
Для того, что вы хотите, int?
должно быть идеальным. Вы могли бы использовать синтаксис длинной руки (Nullable<int>
), но IMO это излишне многословно, и я видел, как это сбивает с толку людей.