是的,这是在.NET 1.0中为FileInfo类进行的设计选择的副作用.它在构造FileInfo对象时不存储属性值,在使用属性getter时从文件中检索它.这样,您始终可以获得房产的最新价值.这当然对于大小和日期属性来说很重要,它们很容易变异.然而,通过网络的往返使得它变慢.
它是在.NET 4中使用添加的DirectoryInfo.EnumerateXxxx()方法解决的.强调一个枚举器现在很明显你得到了一个可能过时的文件信息副本.但避免往返.
如果你可以使用.NET 4,解决你的问题.如果你不能,你需要pinvoke FindFirstFile,FindNextFile,FindClose.