Iai*_*oat 11 .net c# caching fileinfo
从属性的MSDN文档中FileInfo.Name,我看到属性的数据在第一次被调用时被缓存,并且随后将仅使用该Refresh方法进行更新.
我有以下问题,我在文档中找不到或不太清楚:
是否同时缓存了所有属性的数据?
该Refresh方法是在创建时调用的FileInfo,还是仅在第一次调用属性时调用?
如果我调用了一个属性,例如Name属性,并且它被调用Refresh,将DirectoryName首次调用另一个属性(例如属性)使其Refresh再次调用,或者它是否仅由在整个类中访问的第一个属性调用(见问题#1)?
我可以通过Refresh手动调用预先缓存所有属性吗?(假设它没有在构造对象时预先缓存)
Refresh手动调用是否会导致预先缓存的属性,例如CreationTime,还要刷新?
猜测是的。FileInfo仅获取之前获取过的属性似乎是一种弄巧成拙的“优化” ,尤其是当它们可以(并且可能)在一个 API 调用中全部获取时。
事实上,文档调用了DirectoryInfo提供已缓存的方法,这FileInfo非常强烈地表明(无论如何,对我来说)简单地构造 aFileInfo不会缓存任何内容。这是有道理的 - 如果您FileInfo直接构造 a ,它可能引用一个尚不存在的文件(例如,您计划创建它),而返回缓存的所有方法都FileInfo引用当时存在的文件快照,假设您将至少使用其中的一些。
不,根据我对问题 1 的回答。这就是 Refresh 方法存在的原因。
我想是这样的(见答案1)。
是的。参见答案3。