【发布时间】:2016-09-05 12:59:48
【问题描述】:
考虑下面的代码 -
FileInfo fileInfo = new FileInfo("C:\\doesNotExist.txt");
Console.WriteLine(fileInfo.Attributes);
Console.WriteLine(fileInfo.Attributes.HasFlag(FileAttributes.ReadOnly));
根据documentation,枚举的默认基础类型是int,而值为-1 的int 基本上是二进制的全1。由于 FileAttributes 允许其成员值 (as stated here) 的按位组合,为什么 FileAttributes 的默认值为 -1,因为这意味着不存在的文件拥有所有可能的 FileAttributes(上面的代码打印 True 第三行)
【问题讨论】:
-
向后兼容。改用 File.GetAttributes(),它会抛出。
标签: c# fileinfo system.io.fileinfo