C# .Net MemoryCache绝对过期文档令人困惑

C# .Net MemoryCache绝对过期文档令人困惑,c#,caching,memorycache,C#,Caching,Memorycache,将缓存项添加到System.Runtime.Caching.MemoryCache时,可以使用AbsoluteExpiration指定CacheItemPolicy。根据文档(),AbsoluteExpiration是“缓存项被逐出之前必须经过的一段时间” 是的,这就是我想要的-指定“时间段”,在这段时间之后,我的缓存项将过期。但是AbsoluteExpiration的类型是DateTimeOffset而不是TimeSpan,所以它是“时间点”而不是“时间段”。那我该怎么设置呢?例如,如果我希望

将缓存项添加到System.Runtime.Caching.MemoryCache时,可以使用AbsoluteExpiration指定CacheItemPolicy。根据文档(),AbsoluteExpiration是“缓存项被逐出之前必须经过的一段时间”

是的,这就是我想要的-指定“时间段”,在这段时间之后,我的缓存项将过期。但是AbsoluteExpiration的类型是DateTimeOffset而不是TimeSpan,所以它是“时间点”而不是“时间段”。那我该怎么设置呢?例如,如果我希望条目在60秒内过期,我是否应该将AbsoluteExpiration设置为
DateTimeOffset.UtcNow.AddSeconds(60)
?如果将其设置为
DateTimeOffset.Now.AddSeconds(60)
,是否会得到相同的结果?使用其中一个的原因是什么?

是的,文档中的短语“在指定的持续时间之后”有点让人困惑,但是
DateTimeOffset
类型和
绝对过期
属性名称毫无疑问

关于如何构造
DateTimeOffset
实例的方法:在这种情况下实际上没有任何区别
DateTimeOffset.UtcNow.AddSeconds(60)
DateTimeOffset.Now.AddSeconds(60)
将指向相同的绝对时间。这些日期时间因时区而异,但在这两种情况下,缓存项过期的时间相同。因此,没有任何理由选择其中之一