C#Func <object> getObject的目的是什么?

Miv*_*web 1 c# func

我找到了以下代码片段,并想知道该Func<object> getObject属性的目的是什么:

public void InsertCacheItem(string key, Func<object> getObject, TimeSpan duration)
{
    try
    {
        var value = getObject();
        if (value == null)
            return;

        key = GetCacheKey(key);

        _cache.Insert(
            key,
            value,
            null,
            System.Web.Caching.Cache.NoAbsoluteExpiration,
            duration,
            System.Web.Caching.CacheItemPriority.Normal,
            null);
    }
    catch { }
}
Run Code Online (Sandbox Code Playgroud)

如何通过传递Func属性来调用此特定函数?

mjw*_*lls 6

你可以这样称呼:

InsertCacheItem("bob", () => "valuetocache", TimeSpan.FromHours(1));
Run Code Online (Sandbox Code Playgroud)

但为什么这样呢?为什么不直接传入"valuetocache"?好吧,主要是由于try..catch.写入的代码意味着即使Func执行失败,调用代码也不会受到影响.

所以:

InsertCacheItem("bob", () => MethodThatThrowsException(), TimeSpan.FromHours(1));
Run Code Online (Sandbox Code Playgroud)

例如,仍然可以工作.它不会缓存任何内容,但它不会冒出调用代码的异常.