Что касается вашего редактирования: вы предполагаете ложь.Необнуляемые типы значений можно сравнивать с нулем;результат сравнения всегда ложен.Обратите внимание:
bool IsItNull<T>(T value)
{
return value == null;
}
Console.WriteLine(IsItNull(new object())); // False
Console.WriteLine((string)null); // True
Console.WriteLine(5); // False
Сравнение типов значений с нулем не ограничивается общими методами:
http://ideone.com/c74Tc
Если ваши требования к проверке более сложные, вы можете принятьФункция проверки вместе с делегатом, который вычисляет значение для кэширования:
Func<string> generator = () => GetStringFromDatabase();
Func<string, bool> validator = s => s != null;
Для целого числа, если вы знаете, что значение должно быть неотрицательным:
Func<int> generator = () => GetAnIntFromDatabase();
Func<int, bool> validator = i => i >= 0;