Да, вы можете использовать int?
Таким образом, вы можете иметь значение по умолчанию, равное нулю, а не 0. Поскольку результатом stockvalue может быть 0, нет никакой путаницы относительно того, была ли база данных 0 или нулевой. Например, как это (предварительно обнуляемый) у нас была инициализация по умолчанию -1, чтобы представить, что никакое значение не было назначено. Лично я подумал, что это немного опасно, потому что, если вы забудете установить его на -1, возникнет проблема с повреждением данных, которую очень сложно отследить.
http://msdn.microsoft.com/en-us/library/2cf62fcy(VS.80).aspx
int? stockvalue = null;
if (!Convert.IsDBNull(reader["StockValue"]))
stockvalue = (int)reader["StockValue"];
//Then you can check
if(stockValue.HasValue)
{
// do something here.
}