«Ссылка на объект не установлена для экземпляра объекта» - это c # lingo для «Вы сделали что-то глупое со значением null
»
Если кэш-память пуста, сначала нужно проверить,
bool status1 = (bool)Cache["cache_req_head"];
должно быть
bool status1 = false;
if (Cache["cache_req_head"] != null)
{
status1 = (bool)Cache["cache_req_head"];
}
Это является следствием того факта, что типы значений (такие как bool, int и т. Д.) В c # не могут быть нулевыми. Существует оболочка Nullable<T>
с сокращением T?
, которую вы можете использовать, если хотите разрешить нулевые значения для типов значений.
Вы можете привести свое значение к bool?
, поскольку это позволяет null
.
bool? status1 = (bool?)Cache["cache_req_head"];
Затем вы можете проверить status1 == null
или status1.HasValue
, чтобы получить реальное значение bool, вам нужно выбрать его с помощью status1.Value
. Если вы выберете status1.Value
, а status1 == null
, вы получите исключение времени выполнения, подобное тому, которое вы только что получили.