我遇到了一个问题,对我来说有点棘手..
我有一个Cache helper类,它是通用的... ...
我正在考虑在if语句之前删除转换,并在最后返回时转换对象......?
答案 0 :(得分:0)
如果您担心在function.Invoke()之后obj变量可以为null,那么您可以测试并使用默认运算符。
public static class CacheHelper<T>
{
public static T Get(string key, Func<T> function) {
var obj = HttpContext.Current.Cache[key]; // removed the cast
if (obj == null)
{
obj = function.Invoke();
if (obj == null)
{
return default(T);
}
HttpContext.Current.Cache.Add(key, obj, null, DateTime.Now.AddMinutes(3), TimeSpan.Zero, System.Web.Caching.CacheItemPriority.Normal, null);
}
return (T)obj; // now obj won't be null, but it might still be a different type
}
}